|
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.
|