From 763d9cce7cff261fbb3f7d2a8212d9e71ef35251 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Wed, 31 Jan 2007 14:07:20 +0000 Subject: [PATCH] Linux: Make sure the first Mouse.poll() return correct absolute X and Y values --- src/java/org/lwjgl/opengl/LinuxMouse.java | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/java/org/lwjgl/opengl/LinuxMouse.java b/src/java/org/lwjgl/opengl/LinuxMouse.java index bc91ff60..34dc564b 100644 --- a/src/java/org/lwjgl/opengl/LinuxMouse.java +++ b/src/java/org/lwjgl/opengl/LinuxMouse.java @@ -83,12 +83,22 @@ final class LinuxMouse { this.window = window; this.input_window = input_window; this.warp_atom = LinuxDisplay.nInternAtom(display, "_LWJGL", false); - reset(); + reset(false, false); } - private void reset() { + private void reset(boolean grab, boolean warp_pointer) { event_queue = new EventQueue(event_buffer.capacity()); accum_dx = accum_dy = 0; + long root_window = nQueryPointer(display, window, query_pointer_buffer); + + int root_x = query_pointer_buffer.get(0); + int root_y = query_pointer_buffer.get(1); + int win_x = query_pointer_buffer.get(2); + int win_y = query_pointer_buffer.get(3); + // Pretend that the cursor never moved + last_x = win_x; + last_y = transformY(win_y); + doHandlePointerMotion(grab, warp_pointer, root_window, root_x, root_y, win_x, win_y, last_event_nanos); } public void read(ByteBuffer buffer) { @@ -171,17 +181,7 @@ final class LinuxMouse { } public void changeGrabbed(boolean grab, boolean warp_pointer) { - reset(); - long root_window = nQueryPointer(display, window, query_pointer_buffer); - - int root_x = query_pointer_buffer.get(0); - int root_y = query_pointer_buffer.get(1); - int win_x = query_pointer_buffer.get(2); - int win_y = query_pointer_buffer.get(3); - // Pretend that the cursor never moved - last_x = win_x; - last_y = transformY(win_y); - doHandlePointerMotion(grab, warp_pointer, root_window, root_x, root_y, win_x, win_y, last_event_nanos); + reset(grab, warp_pointer); } public int getButtonCount() {