From: <eli...@us...> - 2006-10-24 10:39:24
|
Revision: 2601 http://svn.sourceforge.net/java-game-lib/?rev=2601&view=rev Author: elias_naur Date: 2006-10-24 03:39:14 -0700 (Tue, 24 Oct 2006) Log Message: ----------- Linux: Moved input event processing to LinuxKeyboard and LinuxMouse Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxKeyboard.java trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxMouse.java Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2006-10-24 09:59:00 UTC (rev 2600) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2006-10-24 10:39:14 UTC (rev 2601) @@ -638,16 +638,13 @@ while (LinuxEvent.getPending(getDisplay()) > 0) { event_buffer.nextEvent(getDisplay()); long event_window = event_buffer.getWindow(); - if (event_window != getWindow()) + if (event_window != getWindow() || event_buffer.filterEvent(event_window) || + (mouse != null && mouse.filterEvent(grab, shouldWarpPointer(), event_buffer)) || + (keyboard != null && keyboard.filterEvent(event_buffer))) continue; - if (event_buffer.filterEvent(event_window)) - continue; switch (event_buffer.getType()) { case LinuxEvent.ClientMessage: - if (event_buffer.getClientMessageType() == warp_atom) { - if (mouse != null) - mouse.handleWarpEvent(event_buffer.getClientData(0), event_buffer.getClientData(1)); - } else if ((event_buffer.getClientFormat() == 32) && (event_buffer.getClientData(0) == delete_atom)) + if ((event_buffer.getClientFormat() == 32) && (event_buffer.getClientData(0) == delete_atom)) close_requested = true; break; case LinuxEvent.MapNotify: @@ -661,20 +658,6 @@ case LinuxEvent.Expose: dirty = true; break; - case LinuxEvent.ButtonPress: /* Fall through */ - case LinuxEvent.ButtonRelease: - if (mouse != null) - mouse.handleButtonEvent(grab, event_buffer.getButtonTime(), event_buffer.getButtonType(), (byte)event_buffer.getButtonButton()); - break; - case LinuxEvent.MotionNotify: - if (mouse != null) - mouse.handlePointerMotion(grab, shouldWarpPointer(), event_buffer.getButtonTime(), event_buffer.getButtonRoot(), event_buffer.getButtonXRoot(), event_buffer.getButtonYRoot(), event_buffer.getButtonX(), event_buffer.getButtonY()); - break; - case LinuxEvent.KeyPress: /* Fall through */ - case LinuxEvent.KeyRelease: - if (keyboard != null) - keyboard.handleKeyEvent(event_buffer.getKeyAddress(), event_buffer.getKeyTime(), event_buffer.getKeyType(), event_buffer.getKeyKeyCode(), event_buffer.getKeyState()); - break; default: break; } Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxKeyboard.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxKeyboard.java 2006-10-24 09:59:00 UTC (rev 2600) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxKeyboard.java 2006-10-24 10:39:14 UTC (rev 2601) @@ -296,10 +296,22 @@ } } - public void handleKeyEvent(long event_ptr, long millis, int event_type, int event_keycode, int event_state) { + private void handleKeyEvent(long event_ptr, long millis, int event_type, int event_keycode, int event_state) { int keycode = getKeycode(event_ptr, event_state); byte key_state = getKeyState(event_type); key_down_buffer[keycode] = key_state; translateEvent(event_ptr, event_type, keycode, key_state, millis*1000000); } + + public boolean filterEvent(LinuxEvent event) { + switch (event.getType()) { + case LinuxEvent.KeyPress: /* Fall through */ + case LinuxEvent.KeyRelease: + handleKeyEvent(event.getKeyAddress(), event.getKeyTime(), event.getKeyType(), event.getKeyKeyCode(), event.getKeyState()); + return true; + default: + break; + } + return false; + } } Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxMouse.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxMouse.java 2006-10-24 09:59:00 UTC (rev 2600) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxMouse.java 2006-10-24 10:39:14 UTC (rev 2601) @@ -190,7 +190,7 @@ } private static native void nWarpCursor(long display, long window, int x, int y); - public void handlePointerMotion(boolean grab, boolean warp_pointer, long millis, long root_window, int x_root, int y_root, int x, int y) { + private void handlePointerMotion(boolean grab, boolean warp_pointer, long millis, long root_window, int x_root, int y_root, int x, int y) { doHandlePointerMotion(grab, warp_pointer, root_window, x_root, y_root, x, y, millis*1000000); } @@ -239,7 +239,7 @@ } } - public void handleButtonEvent(boolean grab, long millis, int type, byte button) { + private void handleButtonEvent(boolean grab, long millis, int type, byte button) { long nanos = millis*1000000; switch (type) { case ButtonRelease: @@ -258,7 +258,28 @@ last_y = transformY(y); } - public void handleWarpEvent(int x, int y) { + private void handleWarpEvent(int x, int y) { resetCursor(x, y); } + + public boolean filterEvent(boolean grab, boolean warp_pointer, LinuxEvent event) { + switch (event.getType()) { + case LinuxEvent.ClientMessage: + if (event.getClientMessageType() == warp_atom) { + handleWarpEvent(event.getClientData(0), event.getClientData(1)); + return true; + } + break; + case LinuxEvent.ButtonPress: /* Fall through */ + case LinuxEvent.ButtonRelease: + handleButtonEvent(grab, event.getButtonTime(), event.getButtonType(), (byte)event.getButtonButton()); + return true; + case LinuxEvent.MotionNotify: + handlePointerMotion(grab, warp_pointer, event.getButtonTime(), event.getButtonRoot(), event.getButtonXRoot(), event.getButtonYRoot(), event.getButtonX(), event.getButtonY()); + return true; + default: + break; + } + return false; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |