diff options
author | Sven Gothel <[email protected]> | 2012-02-25 18:30:25 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2012-02-25 18:30:25 +0100 |
commit | c3098619080d10e5bec8b52999117002b16f3ff5 (patch) | |
tree | 0be5c16d29a17010f8c2799fa2abfe54fb96b581 /src/jogl/classes/jogamp/opengl/x11/glx/GLXUtil.java | |
parent | 24f66881aed6bf1f6b79fe6d14ef3fdc0e254fab (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.java | 30 |
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; |