Mac OS X: Worked around another Display.destroy hang when parented to an applet
This commit is contained in:
parent
19a3f6e359
commit
e584a5e0a0
|
@ -53,18 +53,19 @@ final class MacOSXCanvasListener implements ComponentListener, HierarchyListener
|
||||||
|
|
||||||
public MacOSXCanvasListener(Canvas canvas) {
|
public MacOSXCanvasListener(Canvas canvas) {
|
||||||
this.canvas = canvas;
|
this.canvas = canvas;
|
||||||
// ((MacOSXDisplay)Display.getImplementation()).setView(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void enableListeners() {
|
|
||||||
canvas.addComponentListener(this);
|
canvas.addComponentListener(this);
|
||||||
canvas.addHierarchyListener(this);
|
canvas.addHierarchyListener(this);
|
||||||
setUpdate();
|
setUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disableListeners() {
|
public void disableListeners() {
|
||||||
canvas.removeComponentListener(this);
|
// Mac OS X applets will hang in Display.destroy() when parented when removing the listeners directly
|
||||||
canvas.removeHierarchyListener(this);
|
java.awt.EventQueue.invokeLater(new Runnable() {
|
||||||
|
public final void run() {
|
||||||
|
canvas.removeComponentListener(MacOSXCanvasListener.this);
|
||||||
|
canvas.removeHierarchyListener(MacOSXCanvasListener.this);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean syncShouldUpdateContext() {
|
public boolean syncShouldUpdateContext() {
|
||||||
|
|
|
@ -107,7 +107,6 @@ final class MacOSXDisplay implements DisplayImplementation {
|
||||||
canvas = parent;
|
canvas = parent;
|
||||||
}
|
}
|
||||||
canvas_listener = new MacOSXCanvasListener(canvas);
|
canvas_listener = new MacOSXCanvasListener(canvas);
|
||||||
canvas_listener.enableListeners();
|
|
||||||
robot = AWTUtil.createRobot(canvas);
|
robot = AWTUtil.createRobot(canvas);
|
||||||
} catch (LWJGLException e) {
|
} catch (LWJGLException e) {
|
||||||
destroyWindow();
|
destroyWindow();
|
||||||
|
|
Loading…
Reference in New Issue