From: <eli...@us...> - 2008-04-30 13:47:29
|
Revision: 3053 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3053&view=rev Author: elias_naur Date: 2008-04-30 06:47:26 -0700 (Wed, 30 Apr 2008) Log Message: ----------- Mac OS X: Worked around another Display.destroy hang when parented to an applet Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasListener.java trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXDisplay.java Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasListener.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasListener.java 2008-04-30 13:16:53 UTC (rev 3052) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXCanvasListener.java 2008-04-30 13:47:26 UTC (rev 3053) @@ -53,18 +53,19 @@ public MacOSXCanvasListener(Canvas canvas) { this.canvas = canvas; -// ((MacOSXDisplay)Display.getImplementation()).setView(this); - } - - public void enableListeners() { canvas.addComponentListener(this); canvas.addHierarchyListener(this); setUpdate(); } public void disableListeners() { - canvas.removeComponentListener(this); - canvas.removeHierarchyListener(this); + // Mac OS X applets will hang in Display.destroy() when parented when removing the listeners directly + java.awt.EventQueue.invokeLater(new Runnable() { + public final void run() { + canvas.removeComponentListener(MacOSXCanvasListener.this); + canvas.removeHierarchyListener(MacOSXCanvasListener.this); + } + }); } public boolean syncShouldUpdateContext() { Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXDisplay.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXDisplay.java 2008-04-30 13:16:53 UTC (rev 3052) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/MacOSXDisplay.java 2008-04-30 13:47:26 UTC (rev 3053) @@ -107,7 +107,6 @@ canvas = parent; } canvas_listener = new MacOSXCanvasListener(canvas); - canvas_listener.enableListeners(); robot = AWTUtil.createRobot(canvas); } catch (LWJGLException e) { destroyWindow(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |