summaryrefslogtreecommitdiffstats
path: root/src/test/com
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2012-09-21 22:18:20 +0200
committerSven Gothel <[email protected]>2012-09-21 22:18:20 +0200
commitba846a478d616327817dd530dbdcd9a786be5b7a (patch)
tree12bdeed9d2d1612ac18619e246163b31ebdde794 /src/test/com
parent495a1fbd591dfd9c428d9be660c3db33b7cb7aae (diff)
Fix Bug 621, JVM Crashes During X11 Shutdown while closing all unclosed display connections.x11_xinitthreads
This is a regression of JOGL commit f2cfb6119a3663715ed2d572643949b3bef58662 to fix Bug 610. Commit f2cfb6119a3663715ed2d572643949b3bef58662 closed all open display connections at JVM shutdown in order of their creation. This is required IF the driver is the proprietary ATI on X11. X11Util.setMarkAllDisplaysUnclosable(true) is called in this case. However, this behavior causes a SIGSEGV for other GPU driver, i.e. Nvidia :) This fix only closes the pending display connections in their respective order IF X11Util.getMarkAllDisplaysUnclosable() == true. Hence the 'new' cleanup as introduced in the offending commit is only performed on the erroneous ATI driver. Manually tested w/ TestGearsES2AWT, see it's commandline options for details.
Diffstat (limited to 'src/test/com')
-rw-r--r--src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2AWT.java23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2AWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2AWT.java
index 732036eb0..c97054d18 100644
--- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2AWT.java
+++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/TestGearsES2AWT.java
@@ -65,6 +65,9 @@ public class TestGearsES2AWT extends UITestCase {
static boolean shallUseOffscreenPBufferLayer = false;
static boolean useMSAA = false;
static boolean addComp = true;
+ static boolean shutdownRemoveGLCanvas = true;
+ static boolean shutdownDisposeFrame = true;
+ static boolean shutdownSystemExit = false;
static int swapInterval = 1;
@BeforeClass
@@ -128,8 +131,15 @@ public class TestGearsES2AWT extends UITestCase {
Assert.assertEquals(false, frame.isVisible());
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
- frame.remove(glCanvas);
- frame.dispose();
+ if(shutdownRemoveGLCanvas) {
+ frame.remove(glCanvas);
+ }
+ if(shutdownDisposeFrame) {
+ frame.dispose();
+ }
+ if(shutdownSystemExit) {
+ System.exit(0);
+ }
}});
}
@@ -175,6 +185,15 @@ public class TestGearsES2AWT extends UITestCase {
waitForKey = true;
} else if(args[i].equals("-justGears")) {
addComp = false;
+ } else if(args[i].equals("-shutdownKeepGLCanvas")) {
+ shutdownRemoveGLCanvas = false;
+ } else if(args[i].equals("-shutdownKeepFrame")) {
+ shutdownDisposeFrame = false;
+ } else if(args[i].equals("-shutdownKeepAll")) {
+ shutdownRemoveGLCanvas = false;
+ shutdownDisposeFrame = false;
+ } else if(args[i].equals("-shutdownSystemExit")) {
+ shutdownSystemExit = true;
}
}
System.err.println("forceES2 "+forceES2);