From 9e66972c193399d6dcdf9e6662f4335bdf15736a Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Sat, 25 Feb 2012 17:27:23 +0100
Subject: 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).
---
 .../classes/jogamp/opengl/windows/wgl/WindowsWGLDrawableFactory.java | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

(limited to 'src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLDrawableFactory.java')

diff --git a/src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLDrawableFactory.java b/src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLDrawableFactory.java
index 6784ddded..9ddab4239 100644
--- a/src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLDrawableFactory.java
+++ b/src/jogl/classes/jogamp/opengl/windows/wgl/WindowsWGLDrawableFactory.java
@@ -103,6 +103,8 @@ public class WindowsWGLDrawableFactory extends GLDrawableFactoryImpl {
         }
     }
     
+    defaultDevice = new WindowsGraphicsDevice(AbstractGraphicsDevice.DEFAULT_UNIT);
+    
     if(null!=windowsWGLDynamicLookupHelper) {
         // Register our GraphicsConfigurationFactory implementations
         // The act of constructing them causes them to be registered
@@ -114,7 +116,6 @@ public class WindowsWGLDrawableFactory extends GLDrawableFactoryImpl {
             } catch (JogampRuntimeException jre) { /* n/a .. */ }
         }
     
-        defaultDevice = new WindowsGraphicsDevice(AbstractGraphicsDevice.DEFAULT_UNIT);
         sharedMap = new HashMap<String, SharedResourceRunner.Resource>();
     
         // Init shared resources off thread
@@ -379,7 +380,7 @@ public class WindowsWGLDrawableFactory extends GLDrawableFactoryImpl {
   }
 
   public final boolean getIsDeviceCompatible(AbstractGraphicsDevice device) {
-      if(device instanceof WindowsGraphicsDevice) {
+      if(null!=windowsWGLDynamicLookupHelper && device instanceof WindowsGraphicsDevice) {
           return true;
       }
       return false;
-- 
cgit v1.2.3