aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--make/build.xml35
-rwxr-xr-xmake/glu-CustomJavaCode-gles1_if.java12
-rw-r--r--src/classes/com/sun/opengl/impl/GLContextImpl.java25
-rw-r--r--src/classes/com/sun/opengl/impl/GLReflection.java114
-rwxr-xr-xsrc/classes/com/sun/opengl/impl/egl/EGLDrawableFactory.java19
-rw-r--r--src/classes/javax/media/opengl/GLDrawableFactory.java91
-rw-r--r--src/classes/javax/media/opengl/GLProfile.java79
-rw-r--r--src/classes/javax/media/opengl/NativeWindowFactory.java12
8 files changed, 233 insertions, 154 deletions
diff --git a/make/build.xml b/make/build.xml
index 7858fa2d0..7a0b4fc5d 100644
--- a/make/build.xml
+++ b/make/build.xml
@@ -1314,16 +1314,8 @@
</condition>
<patternset id="c.src.files.jogl.awt">
- <include name="${rootrel.src.c.jogl}/XineramaHelper.c" if="isX11"/>
- <!-- Xinerama supporting functions for Linux only (for now) -->
- <!-- Also supported on Solaris, but works differently -->
- <include name="${rootrel.src.c.jogl}/Xinerama.c" if="isLinux"/>
-
- <include name="${rootrel.src.c.jogl}/MacOSXWindowSystemInterface.m" if="isOSX"/>
-
<include name="${rootrel.src.c.jogl}/JAWT*.c"/>
- <include name="${rootrel.generated.c.jogl}/X11/X11Lib_JNI.c" if="isX11"/>
<include name="${rootrel.generated.c.jogl}/X11/JAWT*.c" if="isX11"/>
<include name="${rootrel.generated.c.jogl}/OSX/JAWT*.c" if="isOSX"/>
@@ -1339,6 +1331,15 @@
</patternset>
<patternset id="c.src.files.jogl.gl2">
+ <include name="${rootrel.src.c.jogl}/XineramaHelper.c" if="isX11"/>
+ <!-- Xinerama supporting functions for Linux only (for now) -->
+ <!-- Also supported on Solaris, but works differently -->
+ <include name="${rootrel.src.c.jogl}/Xinerama.c" if="isLinux"/>
+
+ <include name="${rootrel.src.c.jogl}/MacOSXWindowSystemInterface.m" if="isOSX"/>
+
+ <include name="${rootrel.generated.c.jogl}/X11/X11Lib_JNI.c" if="isX11"/>
+
<include name="${rootrel.src.c.jogl}/InternalBufferUtils.c"/>
<include name="${rootrel.src.c.jogl}/ContextUpdater.m" if="isOSX"/>
@@ -1356,6 +1357,15 @@
</patternset>
<patternset id="c.src.files.jogl.es2">
+ <include name="${rootrel.src.c.jogl}/XineramaHelper.c" if="isX11"/>
+ <!-- Xinerama supporting functions for Linux only (for now) -->
+ <!-- Also supported on Solaris, but works differently -->
+ <include name="${rootrel.src.c.jogl}/Xinerama.c" if="isLinux"/>
+
+ <include name="${rootrel.src.c.jogl}/MacOSXWindowSystemInterface.m" if="isOSX"/>
+
+ <include name="${rootrel.generated.c.jogl}/X11/X11Lib_JNI.c" if="isX11"/>
+
<include name="${rootrel.generated.c.jogl}/GLES2Impl_JNI.c"/>
<include name="${rootrel.generated.c.jogl}/EGL_JNI.c"/>
@@ -1364,6 +1374,15 @@
</patternset>
<patternset id="c.src.files.jogl.es1">
+ <include name="${rootrel.src.c.jogl}/XineramaHelper.c" if="isX11"/>
+ <!-- Xinerama supporting functions for Linux only (for now) -->
+ <!-- Also supported on Solaris, but works differently -->
+ <include name="${rootrel.src.c.jogl}/Xinerama.c" if="isLinux"/>
+
+ <include name="${rootrel.src.c.jogl}/MacOSXWindowSystemInterface.m" if="isOSX"/>
+
+ <include name="${rootrel.generated.c.jogl}/X11/X11Lib_JNI.c" if="isX11"/>
+
<include name="${rootrel.generated.c.jogl}/EGL_JNI.c"/>
<include name="${rootrel.src.c.jogl}/InternalBufferUtils.c"/>
<include name="${rootrel.src.c.jogl}/ContextUpdater.m" if="isOSX"/>
diff --git a/make/glu-CustomJavaCode-gles1_if.java b/make/glu-CustomJavaCode-gles1_if.java
index 6b2504388..02e95a324 100755
--- a/make/glu-CustomJavaCode-gles1_if.java
+++ b/make/glu-CustomJavaCode-gles1_if.java
@@ -91,19 +91,11 @@ public static final GLU createGLU(GL gl) throws GLException {
if(gl.isGL2()) {
clazzName="javax.media.opengl.glu.gl2.GLUgl2";
} else if(gl.isGLES1()) {
- clazzName="javax.media.opengl.glu.gl2.GLUgl2";
+ clazzName="javax.media.opengl.glu.es1.GLUes1";
} else {
throw new GLException("GLU not supported for GL "+gl);
}
- try {
- Class clazz = Class.forName(clazzName);
- Constructor c = clazz.getDeclaredConstructor(new Class[0]);
- glu = (GLU) c.newInstance(null);
- } catch (Exception e) {
- throw new GLException(e);
- }
-
- return glu;
+ return (GLU) GLReflection.createInstance(clazzName);
}
public static final GL getCurrentGL() throws GLException {
diff --git a/src/classes/com/sun/opengl/impl/GLContextImpl.java b/src/classes/com/sun/opengl/impl/GLContextImpl.java
index 6bec8c1e5..fd3b73b42 100644
--- a/src/classes/com/sun/opengl/impl/GLContextImpl.java
+++ b/src/classes/com/sun/opengl/impl/GLContextImpl.java
@@ -226,10 +226,8 @@ public abstract class GLContextImpl extends GLContext {
// Helpers for various context implementations
//
- private Object createObject(String suffix, Class[] cstrArgs) {
+ private Object createInstance(String suffix, Class[] cstrArgTypes, Object[] cstrArgs) {
String clazzName = null;
- Class factoryClass = null;
- Constructor factory = null;
try {
if(GLProfile.isGL2()) {
@@ -241,22 +239,7 @@ public abstract class GLContextImpl extends GLContext {
} else {
throw new GLException("uncovered profile");
}
- factoryClass = Class.forName(clazzName);
- if (factoryClass == null) {
- throw new GLException(clazzName + " not yet implemented");
- }
- try {
- factory = factoryClass.getDeclaredConstructor( cstrArgs );
- } catch(NoSuchMethodException nsme) {
- throw new GLException("Constructor: '" + clazzName + "("+cstrArgs+")' not found");
- }
- if(cstrArgs.length==0) {
- return factory.newInstance(null);
- }
- if(cstrArgs[0].equals(GLContextImpl.class)) {
- return factory.newInstance(new Object[] { this });
- }
- throw new GLException("Constructor: '" + clazzName + "("+cstrArgs[0]+")' not yet supported");
+ return GLReflection.createInstance(clazzName, cstrArgTypes, cstrArgs);
} catch (Exception e) {
throw new GLException(e);
}
@@ -264,7 +247,7 @@ public abstract class GLContextImpl extends GLContext {
/** Create the GL for this context. */
protected GL createGL() {
- GL gl = (GL) createObject("Impl", new Class[] { GLContextImpl.class } );
+ GL gl = (GL) createInstance("Impl", new Class[] { GLContextImpl.class }, new Object[] { this } );
/* FIXME: refactor dependence on Java 2D / JOGL bridge
if (tracker != null) {
@@ -344,7 +327,7 @@ public abstract class GLContextImpl extends GLContext {
System.err.println(getThreadName() + ": !!! Initializing OpenGL extension address table for " + this);
}
if (glProcAddressTable == null) {
- glProcAddressTable = (ProcAddressTable) createObject("ProcAddressTable", new Class[0]);
+ glProcAddressTable = (ProcAddressTable) createInstance("ProcAddressTable", new Class[0], null);
// FIXME: cache ProcAddressTables by capability bits so we can
// share them among contexts with the same capabilities
}
diff --git a/src/classes/com/sun/opengl/impl/GLReflection.java b/src/classes/com/sun/opengl/impl/GLReflection.java
new file mode 100644
index 000000000..94e004f30
--- /dev/null
+++ b/src/classes/com/sun/opengl/impl/GLReflection.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistribution of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistribution in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Neither the name of Sun Microsystems, Inc. or the names of
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any kind. ALL
+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+ * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
+ * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
+ * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+ * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+ * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
+ * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ * You acknowledge that this software is not designed or intended for use
+ * in the design, construction, operation or maintenance of any nuclear
+ * facility.
+ */
+
+package com.sun.opengl.impl;
+
+import java.lang.reflect.*;
+import javax.media.opengl.*;
+
+public final class GLReflection {
+
+ public static final Constructor getConstructor(String clazzName, Class[] cstrArgTypes) {
+ Class factoryClass = null;
+ Constructor factory = null;
+
+ try {
+ factoryClass = Class.forName(clazzName);
+ if (factoryClass == null) {
+ throw new GLException(clazzName + " not available");
+ }
+ try {
+ factory = factoryClass.getDeclaredConstructor( cstrArgTypes );
+ } catch(NoSuchMethodException nsme) {
+ throw new GLException("Constructor: '" + clazzName + "("+cstrArgTypes+")' not found");
+ }
+ return factory;
+ } catch (Exception e) {
+ throw new GLException(e);
+ }
+ }
+
+ public static final Constructor getConstructor(String clazzName) {
+ return getConstructor(clazzName, new Class[0]);
+ }
+
+ public static final Object createInstance(String clazzName, Class[] cstrArgTypes, Object[] cstrArgs) {
+ Constructor factory = null;
+
+ try {
+ factory = getConstructor(clazzName, cstrArgTypes);
+ return factory.newInstance( cstrArgs ) ;
+ } catch (Exception e) {
+ throw new GLException(e);
+ }
+ }
+
+ public static final Object createInstance(String clazzName, Object[] cstrArgs) {
+ Class[] cstrArgTypes = new Class[cstrArgs.length];
+ for(int i=0; i<cstrArgs.length; i++) {
+ cstrArgTypes[i] = cstrArgs[i].getClass();
+ }
+ return createInstance(clazzName, cstrArgTypes, cstrArgs);
+ }
+
+ public static final Object createInstance(String clazzName) {
+ return createInstance(clazzName, new Class[0], null);
+ }
+
+ public static final boolean instanceOf(Object obj, String clazzName) {
+ Class clazz = obj.getClass();
+ do {
+ if(clazz.getName().equals(clazzName)) {
+ return true;
+ }
+ clazz = clazz.getSuperclass();
+ } while (clazz!=null);
+ return false;
+ }
+
+ public static final boolean implementationOf(Object obj, String faceName) {
+ Class[] clazzes = obj.getClass().getInterfaces();
+ for(int i=clazzes.length-1; i>=0; i--) {
+ Class face = clazzes[i];
+ if(face.getName().equals(faceName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
+
diff --git a/src/classes/com/sun/opengl/impl/egl/EGLDrawableFactory.java b/src/classes/com/sun/opengl/impl/egl/EGLDrawableFactory.java
index 9ba2a0c40..a01dd91c7 100755
--- a/src/classes/com/sun/opengl/impl/egl/EGLDrawableFactory.java
+++ b/src/classes/com/sun/opengl/impl/egl/EGLDrawableFactory.java
@@ -57,18 +57,23 @@ public class EGLDrawableFactory extends GLDrawableFactoryImpl {
// Try several variants
List/*<String>*/ glesLibNames = new ArrayList();
- // Windows
- glesLibNames.add("libGLES_CM");
- glesLibNames.add("libGLES_CL");
- // Unix
- glesLibNames.add("GLES_CM");
- glesLibNames.add("GLES_CL");
- // NVidia APX 2500
+
if (GLProfile.isGLES2()) {
+ // Unix
+ glesLibNames.add("libGLESv2");
glesLibNames.add("libGLESv2_CM");
+ // Windows
+ glesLibNames.add("GLESv2");
glesLibNames.add("GLESv2_CM");
} else if (GLProfile.isGLES1()) {
+ // Unix
+ glesLibNames.add("libGLES_CM");
+ glesLibNames.add("libGLES_CL");
glesLibNames.add("libGLESv1_CM");
+
+ // Windows
+ glesLibNames.add("GLES_CM");
+ glesLibNames.add("GLES_CL");
glesLibNames.add("GLESv1_CM");
} else {
throw new GLException("Invalid GL Profile for EGL: "+GLProfile.getProfile());
diff --git a/src/classes/javax/media/opengl/GLDrawableFactory.java b/src/classes/javax/media/opengl/GLDrawableFactory.java
index 8177f2924..2a8b32356 100644
--- a/src/classes/javax/media/opengl/GLDrawableFactory.java
+++ b/src/classes/javax/media/opengl/GLDrawableFactory.java
@@ -90,13 +90,7 @@ public abstract class GLDrawableFactory {
// and if so, try to instantiate the EGLDrawableFactory
if (GLProfile.isGLES()) {
try {
- Class clazz = Class.forName("com.sun.opengl.impl.egl.awt.EGLDrawableFactory");
- /**
- Constructor c = clazz.getDeclaredConstructor(new Class[] { String.class });
- awtFactory = (GLDrawableFactory) c.newInstance(new Object[] { GLProfile.getProfile() });
- */
- Constructor c = clazz.getDeclaredConstructor(new Class[0]);
- awtFactory = (GLDrawableFactory) c.newInstance(null);
+ awtFactory = (GLDrawableFactory) GLReflection.createInstance("com.sun.opengl.impl.egl.awt.EGLDrawableFactory");
return;
} catch (Exception e) {
e.printStackTrace();
@@ -116,7 +110,6 @@ public abstract class GLDrawableFactory {
});
String osName = System.getProperty("os.name");
String osNameLowerCase = osName.toLowerCase();
- Class factoryClass = null;
// Because there are some complications with generating all
// platforms' Java glue code on all platforms (among them that we
@@ -124,27 +117,18 @@ public abstract class GLDrawableFactory {
// sources, which we currently don't have to do) we break the only
// static dependencies with platform-specific code here using reflection.
- if (factoryClassName != null) {
- factoryClass = Class.forName(factoryClassName);
- } else if (osNameLowerCase.startsWith("wind")) {
- factoryClass = Class.forName("com.sun.opengl.impl.windows.wgl.WindowsWGLDrawableFactory");
- } else if (osNameLowerCase.startsWith("mac os x")) {
- factoryClass = Class.forName("com.sun.opengl.impl.macosx.cgl.awt.MacOSXAWTCGLDrawableFactory");
- } else {
- // Assume Linux, Solaris, etc. Should probably test for these explicitly.
- factoryClass = Class.forName("com.sun.opengl.impl.x11.glx.awt.X11AWTGLXDrawableFactory");
+ if (factoryClassName == null) {
+ if (osNameLowerCase.startsWith("wind")) {
+ factoryClassName = "com.sun.opengl.impl.windows.wgl.WindowsWGLDrawableFactory";
+ } else if (osNameLowerCase.startsWith("mac os x")) {
+ factoryClassName = "com.sun.opengl.impl.macosx.cgl.awt.MacOSXAWTCGLDrawableFactory";
+ } else {
+ // Assume Linux, Solaris, etc. Should probably test for these explicitly.
+ factoryClassName = "com.sun.opengl.impl.x11.glx.awt.X11AWTGLXDrawableFactory";
+ }
}
- if (factoryClass == null) {
- throw new GLException("OS " + osName + " not yet supported");
- }
-
- /**
- Constructor c = factoryClass.getDeclaredConstructor(new Class[] { String.class });
- awtFactory = (GLDrawableFactory) c.newInstance(new Object[] { GLProfile.getProfile() });
- */
- Constructor c = factoryClass.getDeclaredConstructor(new Class[0]);
- awtFactory = (GLDrawableFactory) c.newInstance(null);
+ awtFactory = (GLDrawableFactory) GLReflection.createInstance(factoryClassName);
} catch (Exception e) {
throw new GLException(e);
}
@@ -160,13 +144,7 @@ public abstract class GLDrawableFactory {
// and if so, try to instantiate the EGLDrawableFactory
if (GLProfile.isGLES()) {
try {
- Class clazz = Class.forName("com.sun.opengl.impl.egl.EGLDrawableFactory");
- /**
- Constructor c = clazz.getDeclaredConstructor(new Class[] { String.class });
- nwFactory = (GLDrawableFactory) c.newInstance(new Object[] { GLProfile.getProfile() });
- */
- Constructor c = clazz.getDeclaredConstructor(new Class[0]);
- nwFactory = (GLDrawableFactory) c.newInstance(null);
+ nwFactory = (GLDrawableFactory) GLReflection.createInstance("com.sun.opengl.impl.egl.EGLDrawableFactory");
return;
} catch (Exception e) {
e.printStackTrace();
@@ -186,29 +164,19 @@ public abstract class GLDrawableFactory {
});
String osName = System.getProperty("os.name");
String osNameLowerCase = osName.toLowerCase();
- Class factoryClass = null;
-
- if (factoryClassName != null) {
- factoryClass = Class.forName(factoryClassName);
- } else if (osNameLowerCase.startsWith("wind")) {
- factoryClass = Class.forName("com.sun.opengl.impl.windows.wgl.WindowsWGLDrawableFactory");
- } else if (osNameLowerCase.startsWith("mac os x")) {
- factoryClass = Class.forName("com.sun.opengl.impl.macosx.cgl.MacOSXCGLDrawableFactory");
- } else {
- // Assume Linux, Solaris, etc. Should probably test for these explicitly.
- factoryClass = Class.forName("com.sun.opengl.impl.x11.glx.X11GLXDrawableFactory");
- }
- if (factoryClass == null) {
- throw new GLException("OS " + osName + " not yet supported");
+ if (factoryClassName == null) {
+ if (osNameLowerCase.startsWith("wind")) {
+ factoryClassName = "com.sun.opengl.impl.windows.wgl.WindowsWGLDrawableFactory";
+ } else if (osNameLowerCase.startsWith("mac os x")) {
+ factoryClassName = "com.sun.opengl.impl.macosx.cgl.MacOSXCGLDrawableFactory";
+ } else {
+ // Assume Linux, Solaris, etc. Should probably test for these explicitly.
+ factoryClassName = "com.sun.opengl.impl.x11.glx.X11GLXDrawableFactory";
+ }
}
- /**
- Constructor c = factoryClass.getDeclaredConstructor(new Class[] { String.class });
- nwFactory = (GLDrawableFactory) c.newInstance(new Object[] { GLProfile.getProfile() });
- */
- Constructor c = factoryClass.getDeclaredConstructor(new Class[0]);
- nwFactory = (GLDrawableFactory) c.newInstance(null);
+ nwFactory = (GLDrawableFactory) GLReflection.createInstance(factoryClassName);
return;
} catch (Exception e) {
throw new GLException(e);
@@ -220,14 +188,6 @@ public abstract class GLDrawableFactory {
protected GLDrawableFactory() {
}
- /** Returns the sole GLDrawableFactory instance for the specified profile. */
- public static GLDrawableFactory getFactory(String profile, Object target)
- throws GLException
- {
- GLProfile.setProfile(profile);
- return getFactory(target);
- }
-
public static GLDrawableFactory getFactory(Object target)
throws GLException
{
@@ -244,13 +204,6 @@ public abstract class GLDrawableFactory {
"\tjava.awt.Component\n");
}
- public static GLDrawableFactory getFactory(String profile, boolean awt)
- throws GLException
- {
- GLProfile.setProfile(profile);
- return getFactory(awt);
- }
-
public static GLDrawableFactory getFactory(boolean awt)
throws GLException
{
diff --git a/src/classes/javax/media/opengl/GLProfile.java b/src/classes/javax/media/opengl/GLProfile.java
index 245cdd95f..c1d46d8bb 100644
--- a/src/classes/javax/media/opengl/GLProfile.java
+++ b/src/classes/javax/media/opengl/GLProfile.java
@@ -53,12 +53,30 @@ public class GLProfile {
/** The JVM/process wide choosen GL profile **/
private static String profile = null;
- public static final void setProfile(String profile)
+ private static final void tryLibrary()
+ {
+ try {
+ if(GL2.equals(profile)) {
+ NativeLibLoader.loadGL2();
+ } else if(GLES1.equals(profile) || GLES2.equals(profile)) {
+ Object eGLDrawableFactory = GLReflection.createInstance("com.sun.opengl.impl.egl.EGLDrawableFactory");
+ if(null==eGLDrawableFactory) {
+ throw new GLException("com.sun.opengl.impl.egl.EGLDrawableFactory not available");
+ }
+ }
+ } catch (Exception e) {
+ System.out.println("Profile: "+profile+" not available");
+ System.out.println("Exception: "+e);
+ profile=null;
+ }
+ }
+
+ public static synchronized final void setProfile(String profile)
throws GLException
{
if(null==GLProfile.profile) {
- // preset profile .. 1st come 1st serve
GLProfile.profile = profile;
+ tryLibrary();
} else {
if(!GLProfile.profile.equals(profile)) {
throw new GLException("Choosen profile ("+profile+") doesn't match preset one: "+GLProfile.profile);
@@ -66,6 +84,31 @@ public class GLProfile {
}
}
+ public static synchronized final void setProfile(String[] profiles)
+ throws GLException
+ {
+ for(int i=0; profile==null && i<profiles.length; i++) {
+ setProfile(profiles[i]);
+ }
+ if(null==profile) {
+ throw new GLException("Profiles "+profiles+" not available");
+ }
+ }
+
+ public static synchronized final void setProfileGL2ES1() {
+ setProfile(new String[] { GLES1, GL2 });
+ if(null==profile) {
+ throw new GLException("Profiles GLES1 and GL2 not available");
+ }
+ }
+
+ public static synchronized final void setProfileGL2ES2() {
+ setProfile(new String[] { GLES2, GL2 });
+ if(null==profile) {
+ throw new GLException("Profiles GLES2 and GL2 not available");
+ }
+ }
+
public static final String getProfile() {
return profile;
}
@@ -98,38 +141,16 @@ public class GLProfile {
return (null==test_profile)?false:test_profile.equals(profile);
}
- public static final boolean instanceOf(Object obj, String clazzName) {
- Class clazz = obj.getClass();
- do {
- if(clazz.getName().equals(clazzName)) {
- return true;
- }
- clazz = clazz.getSuperclass();
- } while (clazz!=null);
- return false;
- }
-
- public static final boolean implementationOf(Object obj, String faceName) {
- Class[] clazzes = obj.getClass().getInterfaces();
- for(int i=clazzes.length-1; i>=0; i--) {
- Class face = clazzes[i];
- if(face.getName().equals(faceName)) {
- return true;
- }
- }
- return false;
- }
-
public static final boolean implementationOfGL2(Object obj) {
- return implementationOf(obj, "javax.media.opengl.GL2");
+ return GLReflection.implementationOf(obj, "javax.media.opengl.GL2");
}
public static final boolean implementationOfGLES1(Object obj) {
- return implementationOf(obj, "javax.media.opengl.GLES1");
+ return GLReflection.implementationOf(obj, "javax.media.opengl.GLES1");
}
public static final boolean implementationOfGLES2(Object obj) {
- return implementationOf(obj, "javax.media.opengl.GLES2");
+ return GLReflection.implementationOf(obj, "javax.media.opengl.GLES2");
}
public static final boolean implementationOfGLES(Object obj) {
@@ -137,11 +158,11 @@ public class GLProfile {
}
public static final boolean implementationOfGL2ES1(Object obj) {
- return implementationOf(obj, "javax.media.opengl.GL2ES1");
+ return GLReflection.implementationOf(obj, "javax.media.opengl.GL2ES1");
}
public static final boolean implementationOfGL2ES2(Object obj) {
- return implementationOf(obj, "javax.media.opengl.GL2ES2");
+ return GLReflection.implementationOf(obj, "javax.media.opengl.GL2ES2");
}
}
diff --git a/src/classes/javax/media/opengl/NativeWindowFactory.java b/src/classes/javax/media/opengl/NativeWindowFactory.java
index 9bbfe7aac..006cb03ba 100644
--- a/src/classes/javax/media/opengl/NativeWindowFactory.java
+++ b/src/classes/javax/media/opengl/NativeWindowFactory.java
@@ -53,7 +53,6 @@ public class NativeWindowFactory {
try {
String osName = System.getProperty("os.name");
String osNameLowerCase = osName.toLowerCase();
- Class factoryClass = null;
String factoryClassName = null;
// Because there are some complications with generating all
@@ -74,15 +73,8 @@ public class NativeWindowFactory {
if (factoryClassName == null) {
throw new GLException("OS " + osName + " not yet supported");
}
- factoryClass = Class.forName(factoryClassName);
- if (factoryClass == null) {
- throw new GLException("Factory " + factoryClassName + " not yet implemented");
- }
-
- try {
- awtFactory = factoryClass.getDeclaredConstructor(new Class[] { Object.class });
- } catch(NoSuchMethodException nsme) {}
+ awtFactory = GLReflection.getConstructor(factoryClassName, new Class[] { Object.class });
} catch (Exception e) {
throw new GLException(e);
}
@@ -95,7 +87,7 @@ public class NativeWindowFactory {
* hence the independency to the java.awt.* package.
*/
public static boolean isAWTComponent(Object target) {
- return GLProfile.instanceOf(target, "java.awt.Component");
+ return GLReflection.instanceOf(target, "java.awt.Component");
}
/**