aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/jogamp/opengl/x11/glx
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2011-08-01 20:18:28 +0200
committerSven Gothel <[email protected]>2011-08-01 20:18:28 +0200
commit5884366b39182fdc84dd1565d1727dde03606897 (patch)
treeebcc41f15a2de0f4d1452e3a68f3b367dd23efc7 /src/jogl/classes/jogamp/opengl/x11/glx
parent4afe6456f631352933bd5dcb7610b516a90f29eb (diff)
AWT/X11 Reduce XQueryExtension 'hang' ; Impl. use XineramaIsActive() instead of XineramaQueryScreens()
- Reenable creating own XDisplay for AWT components, which reduces/removes hang in subsequent XQueryExtension call (fetchScreens .. XineramaEnabled()) - Impl. use XineramaIsActive() instead of XineramaQueryScreens() Reducing memory allocation, XFree call (which was missing anyways)
Diffstat (limited to 'src/jogl/classes/jogamp/opengl/x11/glx')
-rw-r--r--src/jogl/classes/jogamp/opengl/x11/glx/awt/X11AWTGLXGraphicsConfigurationFactory.java20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/jogl/classes/jogamp/opengl/x11/glx/awt/X11AWTGLXGraphicsConfigurationFactory.java b/src/jogl/classes/jogamp/opengl/x11/glx/awt/X11AWTGLXGraphicsConfigurationFactory.java
index ee7dd280e..5fcc8e4d1 100644
--- a/src/jogl/classes/jogamp/opengl/x11/glx/awt/X11AWTGLXGraphicsConfigurationFactory.java
+++ b/src/jogl/classes/jogamp/opengl/x11/glx/awt/X11AWTGLXGraphicsConfigurationFactory.java
@@ -89,19 +89,21 @@ public class X11AWTGLXGraphicsConfigurationFactory extends GLGraphicsConfigurati
displayHandle = X11Util.createDisplay(null);
owner = true;
if(DEBUG) {
- System.err.println(Thread.currentThread().getName() + " - X11AWTGLXGraphicsConfigurationFactory: using a thread local X11 display");
+ System.err.println(Thread.currentThread().getName() + " - X11AWTGLXGraphicsConfigurationFactory: create local X11 display");
}
} else {
- if(DEBUG) {
- System.err.println(Thread.currentThread().getName() + " - X11AWTGLXGraphicsConfigurationFactory: using AWT X11 display 0x"+Long.toHexString(displayHandle));
- }
/**
- * Using the AWT display handle works fine with NVidia and AMD drivers today 2011-02-22,
- * hence no need for our own display instance anymore.
- String name = X11Util.XDisplayString(displayHandle);
- displayHandle = X11Util.createDisplay(name);
- owner = true;
+ * Using the AWT display handle works fine with NVidia.
+ * However we experienced different results w/ AMD drivers,
+ * some work, but some behave erratic.
+ * I.e. hangs in XQueryExtension(..) via X11GraphicsScreen.
*/
+ final String displayName = X11Util.XDisplayString(displayHandle);
+ if(DEBUG) {
+ System.err.println(Thread.currentThread().getName() + " - X11AWTGLXGraphicsConfigurationFactory: create X11 display @ "+displayName+" / 0x"+Long.toHexString(displayHandle));
+ }
+ displayHandle = X11Util.createDisplay(displayName);
+ owner = true;
}
((AWTGraphicsDevice)awtScreen.getDevice()).setSubType(NativeWindowFactory.TYPE_X11, displayHandle);
X11GraphicsDevice x11Device = new X11GraphicsDevice(displayHandle, AbstractGraphicsDevice.DEFAULT_UNIT);