diff options
author | Sven Gothel <[email protected]> | 2011-11-23 08:35:24 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2011-11-23 08:35:24 +0100 |
commit | 3bc1ef8344ad44969ef436a0b98b0cde490a78fa (patch) | |
tree | 10cb50e574ea28fe8afccde8c1ecda8b67f5eb03 /src/nativewindow/classes | |
parent | bafd9b99816f55c105230a59211caf13f0315910 (diff) |
GraphicsConfigurationFactory: Kick off 'registerFactory' via static method instead of constructor for clarity.
- prepare for 'jogamp.nativewindow.x11.awt.X11AWTGraphicsConfigurationFactory'
Diffstat (limited to 'src/nativewindow/classes')
4 files changed, 27 insertions, 24 deletions
diff --git a/src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java b/src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java index e510c0b78..3f8746e2a 100644 --- a/src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java +++ b/src/nativewindow/classes/javax/media/nativewindow/GraphicsConfigurationFactory.java @@ -65,7 +65,27 @@ public abstract class GraphicsConfigurationFactory { private static Class<?> abstractGraphicsDeviceClass; static { - initialize(); + abstractGraphicsDeviceClass = javax.media.nativewindow.AbstractGraphicsDevice.class; + + // Register the default no-op factory for arbitrary + // AbstractGraphicsDevice implementations, including + // AWTGraphicsDevice instances -- the OpenGL binding will take + // care of handling AWTGraphicsDevices on X11 platforms (as + // well as X11GraphicsDevices in non-AWT situations) + registerFactory(abstractGraphicsDeviceClass, new DefaultGraphicsConfigurationFactoryImpl()); + + if (NativeWindowFactory.TYPE_X11.equals(NativeWindowFactory.getNativeWindowType(true))) { + try { + ReflectionUtil.callStaticMethod("jogamp.nativewindow.x11.X11GraphicsConfigurationFactory", + "registerFactory", null, null, GraphicsConfigurationFactory.class.getClassLoader()); + } catch (Exception e) { + throw new RuntimeException(e); + } + try { + ReflectionUtil.callStaticMethod("jogamp.nativewindow.x11.awt.X11AWTGraphicsConfigurationFactory", + "registerFactory", null, null, GraphicsConfigurationFactory.class.getClassLoader()); + } catch (Exception e) { /* n/a */ } + } } protected static String getThreadName() { @@ -85,27 +105,6 @@ public abstract class GraphicsConfigurationFactory { protected GraphicsConfigurationFactory() { } - private static void initialize() { - abstractGraphicsDeviceClass = javax.media.nativewindow.AbstractGraphicsDevice.class; - - if (NativeWindowFactory.TYPE_X11.equals(NativeWindowFactory.getNativeWindowType(true))) { - try { - GraphicsConfigurationFactory factory = (GraphicsConfigurationFactory) - ReflectionUtil.createInstance("jogamp.nativewindow.x11.X11GraphicsConfigurationFactory", null, - GraphicsConfigurationFactory.class.getClassLoader()); - registerFactory(javax.media.nativewindow.x11.X11GraphicsDevice.class, factory); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - // Register the default no-op factory for arbitrary - // AbstractGraphicsDevice implementations, including - // AWTGraphicsDevice instances -- the OpenGL binding will take - // care of handling AWTGraphicsDevices on X11 platforms (as - // well as X11GraphicsDevices in non-AWT situations) - registerFactory(abstractGraphicsDeviceClass, new DefaultGraphicsConfigurationFactoryImpl()); - } - /** Returns the factory for use with the given type of AbstractGraphicsDevice. */ public static GraphicsConfigurationFactory getFactory(AbstractGraphicsDevice device) { diff --git a/src/nativewindow/classes/jogamp/nativewindow/NativeWindowFactoryImpl.java b/src/nativewindow/classes/jogamp/nativewindow/NativeWindowFactoryImpl.java index 5cb7d5aca..223078ebf 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/NativeWindowFactoryImpl.java +++ b/src/nativewindow/classes/jogamp/nativewindow/NativeWindowFactoryImpl.java @@ -35,7 +35,6 @@ package jogamp.nativewindow; import java.lang.reflect.Constructor; import javax.media.nativewindow.AbstractGraphicsConfiguration; -import javax.media.nativewindow.NativeSurface; import javax.media.nativewindow.NativeWindow; import javax.media.nativewindow.NativeWindowFactory; import javax.media.nativewindow.ToolkitLock; diff --git a/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java b/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java index dfd81d411..e59137fda 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java +++ b/src/nativewindow/classes/jogamp/nativewindow/jawt/macosx/MacOSXJAWTWindow.java @@ -40,7 +40,6 @@ package jogamp.nativewindow.jawt.macosx; -import java.awt.Component; import java.nio.Buffer; import java.security.AccessController; import java.security.PrivilegedAction; diff --git a/src/nativewindow/classes/jogamp/nativewindow/x11/X11GraphicsConfigurationFactory.java b/src/nativewindow/classes/jogamp/nativewindow/x11/X11GraphicsConfigurationFactory.java index 910e564af..0fd38631b 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/x11/X11GraphicsConfigurationFactory.java +++ b/src/nativewindow/classes/jogamp/nativewindow/x11/X11GraphicsConfigurationFactory.java @@ -43,6 +43,12 @@ import javax.media.nativewindow.x11.X11GraphicsConfiguration; import javax.media.nativewindow.x11.X11GraphicsScreen; public class X11GraphicsConfigurationFactory extends GraphicsConfigurationFactory { + public static void registerFactory() { + GraphicsConfigurationFactory.registerFactory(javax.media.nativewindow.x11.X11GraphicsDevice.class, new X11GraphicsConfigurationFactory()); + } + private X11GraphicsConfigurationFactory() { + } + protected AbstractGraphicsConfiguration chooseGraphicsConfigurationImpl( CapabilitiesImmutable capsChosen, CapabilitiesImmutable capsRequested, CapabilitiesChooser chooser, AbstractGraphicsScreen screen) throws IllegalArgumentException, NativeWindowException { |