diff options
author | Sven Gothel <[email protected]> | 2012-02-25 17:27:23 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2012-02-25 17:27:23 +0100 |
commit | 9e66972c193399d6dcdf9e6662f4335bdf15736a (patch) | |
tree | da7d45b883edc68b1fd279c5dbaf7b9b9a8b4951 /src/jogl/classes/jogamp/opengl/x11 | |
parent | 90e4f6aa688c9730bcdedea727031d5dccb32b39 (diff) |
Fix GLProfile/GLDrawableFactory bug: Recursion on default desktop device, since no profile was mapped.
GLDrawableFactory*:
- Initialize defaultDevice, even if impl. is not available (no GL libraries for impl.), hence
- getDefaultDevice() always returns a valid device
- getIsDeviceCompatible() only returns 'true' if device is supported _and_ drawable factory is functional
GLProfile:
- default-desktop-device becomes default-device even if the desktop-factory itself
is not functional. This is due to the fact that the subsequent EGL-factory
always handles desktop-devices (X11->EGL, GDI->EGL, etc).
Diffstat (limited to 'src/jogl/classes/jogamp/opengl/x11')
-rw-r--r-- | src/jogl/classes/jogamp/opengl/x11/glx/X11GLXDrawableFactory.java | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/jogl/classes/jogamp/opengl/x11/glx/X11GLXDrawableFactory.java b/src/jogl/classes/jogamp/opengl/x11/glx/X11GLXDrawableFactory.java index d356e64c6..4f333406f 100644 --- a/src/jogl/classes/jogamp/opengl/x11/glx/X11GLXDrawableFactory.java +++ b/src/jogl/classes/jogamp/opengl/x11/glx/X11GLXDrawableFactory.java @@ -101,12 +101,13 @@ public class X11GLXDrawableFactory extends GLDrawableFactoryImpl { } } + defaultDevice = new X11GraphicsDevice(X11Util.getNullDisplayName(), AbstractGraphicsDevice.DEFAULT_UNIT); + if(null!=x11GLXDynamicLookupHelper) { // Register our GraphicsConfigurationFactory implementations // The act of constructing them causes them to be registered X11GLXGraphicsConfigurationFactory.registerFactory(); - defaultDevice = new X11GraphicsDevice(X11Util.getNullDisplayName(), AbstractGraphicsDevice.DEFAULT_UNIT); sharedMap = new HashMap<String, SharedResourceRunner.Resource>(); // Init shared resources off thread @@ -139,7 +140,7 @@ public class X11GLXDrawableFactory extends GLDrawableFactoryImpl { X11Util.shutdown( false, DEBUG ); } - public GLDynamicLookupHelper getGLDynamicLookupHelper(int profile) { + public final GLDynamicLookupHelper getGLDynamicLookupHelper(int profile) { return x11GLXDynamicLookupHelper; } @@ -219,7 +220,7 @@ public class X11GLXDrawableFactory extends GLDrawableFactoryImpl { // NativeWindowFactory.getNullToolkitLock(), true); // own non-shared display connection, no locking sharedDevice.lock(); try { - GLXUtil.initGLXClientDataSingleton(sharedDevice); + GLXUtil.initGLXClientDataSingleton(sharedDevice); final String glXServerVendorName = GLX.glXQueryServerString(sharedDevice.getHandle(), 0, GLX.GLX_VENDOR); final VersionNumber glXServerVersion = GLXUtil.getGLXServerVersionNumber(sharedDevice.getHandle()); final boolean glXServerMultisampleAvailable = GLXUtil.isMultisampleAvailable(GLX.glXQueryServerString(sharedDevice.getHandle(), 0, GLX.GLX_EXTENSIONS)); @@ -310,7 +311,7 @@ public class X11GLXDrawableFactory extends GLDrawableFactoryImpl { } public final boolean getIsDeviceCompatible(AbstractGraphicsDevice device) { - if(device instanceof X11GraphicsDevice) { + if(null != x11GLXDynamicLookupHelper && device instanceof X11GraphicsDevice) { return true; } return false; |