aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/jogamp/opengl/x11/glx/GLXUtil.java
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2012-02-25 18:30:25 +0100
committerSven Gothel <[email protected]>2012-02-25 18:30:25 +0100
commitc3098619080d10e5bec8b52999117002b16f3ff5 (patch)
tree0be5c16d29a17010f8c2799fa2abfe54fb96b581 /src/jogl/classes/jogamp/opengl/x11/glx/GLXUtil.java
parent24f66881aed6bf1f6b79fe6d14ef3fdc0e254fab (diff)
X11/GLX: Query X Server whether GLX is available (X11/SharedResourceRunner) ; Minor cleanups.
Before gathering GLX details and actually instantiate a X11/GLX shared resource, we shall query whether GLX is actually available. Since GLX availability is being queried on the server side, more changes are required for the X11GLX* impl, eg. not using X11GLXGraphicsConfigurationFactory and fall back to X11GraphicsConfigurationFactory.
Diffstat (limited to 'src/jogl/classes/jogamp/opengl/x11/glx/GLXUtil.java')
-rw-r--r--src/jogl/classes/jogamp/opengl/x11/glx/GLXUtil.java30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/jogl/classes/jogamp/opengl/x11/glx/GLXUtil.java b/src/jogl/classes/jogamp/opengl/x11/glx/GLXUtil.java
index 33e85dd0b..8b90d6887 100644
--- a/src/jogl/classes/jogamp/opengl/x11/glx/GLXUtil.java
+++ b/src/jogl/classes/jogamp/opengl/x11/glx/GLXUtil.java
@@ -90,22 +90,29 @@ public class GLXUtil {
}
public static VersionNumber getClientVersionNumber() {
return clientVersionNumber;
- }
- public static synchronized boolean initGLXClientDataSingleton(X11GraphicsDevice x11Device) {
+ }
+
+ public static synchronized boolean isGLXAvailable(long handle) {
+ if(0 == handle) {
+ throw new IllegalArgumentException("null X11 display handle");
+ }
+ boolean glXAvailable = false;
+ try {
+ glXAvailable = GLX.glXQueryExtension(handle, null, 0, null, 0);
+ } catch (Throwable t) { /* n/a */ }
+ return glXAvailable;
+ }
+
+ public static synchronized void initGLXClientDataSingleton(X11GraphicsDevice x11Device) {
if(null != clientVendorName) {
- return false;
- }
- if(DEBUG) {
- System.err.println("initGLXClientDataSingleton: "+x11Device);
- Thread.dumpStack();
+ return; // already initialized
}
if(null == x11Device) {
- throw new GLException("null X11GraphicsDevice");
+ throw new IllegalArgumentException("null X11GraphicsDevice");
}
if(0 == x11Device.getHandle()) {
- throw new GLException("null X11GraphicsDevice display handle");
- }
-
+ throw new IllegalArgumentException("null X11GraphicsDevice display handle");
+ }
clientMultisampleAvailable = isMultisampleAvailable(GLX.glXGetClientString(x11Device.getHandle(), GLX.GLX_EXTENSIONS));
clientVendorName = GLX.glXGetClientString(x11Device.getHandle(), GLX.GLX_VENDOR);
@@ -121,7 +128,6 @@ public class GLXUtil {
minor[0] = 2;
}
clientVersionNumber = new VersionNumber(major[0], minor[0], 0);
- return true;
}
private static boolean clientMultisampleAvailable = false;
private static String clientVendorName = null;