From: <eli...@us...> - 2007-02-23 10:14:20
|
Revision: 2744 http://svn.sourceforge.net/java-game-lib/?rev=2744&view=rev Author: elias_naur Date: 2007-02-23 02:14:18 -0800 (Fri, 23 Feb 2007) Log Message: ----------- Linux: When creating a window don't loop waiting for the MapNotify event. Instead, make sure we don't immediately go from fullscreen to minimized by checking if the window has been focused at least once before minimizing (and resetting display mode). Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java trunk/LWJGL/src/native/linux/org_lwjgl_opengl_Display.c Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2007-02-23 08:31:59 UTC (rev 2743) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2007-02-23 10:14:18 UTC (rev 2744) @@ -110,6 +110,7 @@ private boolean minimized; private boolean dirty; private boolean close_requested; + private boolean focused_at_least_once; private long current_cursor; private long blank_cursor; @@ -398,6 +399,7 @@ pointer_grabbed = false; keyboard_grabbed = false; close_requested = false; + focused_at_least_once = false; grab = false; minimized = false; dirty = true; @@ -750,8 +752,9 @@ private void checkInput() { focused = nGetInputFocus(getDisplay()) == getWindow(); if (focused) { + focused_at_least_once = true; acquireInput(); - } else { + } else if (focused_at_least_once) { releaseInput(); } } Modified: trunk/LWJGL/src/native/linux/org_lwjgl_opengl_Display.c =================================================================== --- trunk/LWJGL/src/native/linux/org_lwjgl_opengl_Display.c 2007-02-23 08:31:59 UTC (rev 2743) +++ trunk/LWJGL/src/native/linux/org_lwjgl_opengl_Display.c 2007-02-23 10:14:18 UTC (rev 2744) @@ -127,13 +127,6 @@ return atom; } -static void waitMapped(Display *disp, Window win) { - XEvent event; - do { - XMaskEvent(disp, StructureNotifyMask, &event); - } while ((event.type != MapNotify) || (event.xmap.event != win)); -} - static void __attribute__ ((destructor)) my_fini(void) { Display *disp = XOpenDisplay(NULL); if (disp == NULL) { @@ -294,7 +287,6 @@ XInternAtom(disp, "ATOM", False), 32, PropModeReplace, (const unsigned char*)&fullscreen_atom, 1); } XMapRaised(disp, win); - waitMapped(disp, win); if (!checkXError(env, disp)) { destroyWindow(env, disp, win); return 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |