Linux: Ignore events from old windows

This commit is contained in:
Elias Naur 2005-11-22 14:30:00 +00:00
parent d6ae5e2d45
commit 3c83a92a64
2 changed files with 5 additions and 13 deletions

View File

@ -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) {

View File

@ -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;