Linux: Ignore events from old windows
This commit is contained in:
parent
d6ae5e2d45
commit
3c83a92a64
|
@ -184,6 +184,7 @@ void handleWarpEvent(XClientMessageEvent *event) {
|
|||
static void doWarpPointer(int center_x, int center_y) {
|
||||
XEvent warp_event;
|
||||
warp_event.type = ClientMessage;
|
||||
warp_event.xclient.window = getCurrentWindow();
|
||||
warp_event.xclient.message_type = getWarpAtom();
|
||||
warp_event.xclient.format = 32;
|
||||
warp_event.xclient.data.l[0] = center_x;
|
||||
|
@ -316,7 +317,7 @@ static void doHandlePointerMotion(Window root_window, Window window, int root_x,
|
|||
}
|
||||
|
||||
void handlePointerMotion(XMotionEvent *event) {
|
||||
doHandlePointerMotion(event->root, event->window, event->x_root, event->y_root, event->x, event->y);
|
||||
doHandlePointerMotion(event->root, getCurrentWindow(), event->x_root, event->y_root, event->x, event->y);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_nPollMouse(JNIEnv * env, jclass clazz, jobject coord_buffer_obj, jobject button_buffer_obj) {
|
||||
|
|
|
@ -246,12 +246,13 @@ static void checkInput(JNIEnv *env, jint extension, jint window_mode, jobject sa
|
|||
|
||||
void handleMessages(JNIEnv *env, jint extension, jint window_mode, jobject saved_gamma, jobject current_gamma, jobject saved_mode, jobject current_mode) {
|
||||
XEvent event;
|
||||
/* Window win;
|
||||
int revert_mode;*/
|
||||
while (XPending(getDisplay()) > 0) {
|
||||
XNextEvent(getDisplay(), &event);
|
||||
if (XFilterEvent(&event, None) == True)
|
||||
continue;
|
||||
// Ignore events from old windows
|
||||
if (event.xany.window != getCurrentWindow())
|
||||
continue;
|
||||
switch (event.type) {
|
||||
case ClientMessage:
|
||||
if (event.xclient.message_type == warp_atom) {
|
||||
|
@ -259,16 +260,6 @@ void handleMessages(JNIEnv *env, jint extension, jint window_mode, jobject saved
|
|||
} else if ((event.xclient.format == 32) && ((Atom)event.xclient.data.l[0] == delete_atom))
|
||||
closerequested = true;
|
||||
break;
|
||||
/* case FocusOut:
|
||||
XGetInputFocus(getDisplay(), &win, &revert_mode);
|
||||
if (win != current_win) {
|
||||
releaseInput();
|
||||
focused = false;
|
||||
}
|
||||
break;
|
||||
case FocusIn:
|
||||
checkInput();
|
||||
break;*/
|
||||
case MapNotify:
|
||||
dirty = true;
|
||||
minimized = false;
|
||||
|
|
Loading…
Reference in New Issue