Update of /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/util/generator
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10785/src/java/org/lwjgl/util/generator
Modified Files:
ContextCapabilitiesGenerator.java
ContextGeneratorProcessorFactory.java
Log Message:
OpenGL: Made generated ContextCapabilities only try to load super class symbols if a sub class is supported. This avoids spurious 'Could not locate symbol' warnings in debug mode (glLoadProgramNV on ATI hardware)
Index: ContextGeneratorProcessorFactory.java
===================================================================
RCS file: /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/util/generator/ContextGeneratorProcessorFactory.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- ContextGeneratorProcessorFactory.java 27 Dec 2005 14:46:42 -0000 1.4
+++ ContextGeneratorProcessorFactory.java 6 Feb 2006 11:11:09 -0000 1.5
@@ -139,8 +139,7 @@
ContextCapabilitiesGenerator.generateInitStubsPrologue(writer, context_specific);
for (TypeDeclaration typedecl : interface_decls) {
InterfaceDeclaration interface_decl = (InterfaceDeclaration)typedecl;
- if (!Utils.isFinal(interface_decl))
- ContextCapabilitiesGenerator.generateAddExtension(writer, interface_decl);
+ ContextCapabilitiesGenerator.generateSuperClassAdds(writer, interface_decl);
}
for (TypeDeclaration typedecl : interface_decls) {
InterfaceDeclaration interface_decl = (InterfaceDeclaration)typedecl;
Index: ContextCapabilitiesGenerator.java
===================================================================
RCS file: /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/util/generator/ContextCapabilitiesGenerator.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- ContextCapabilitiesGenerator.java 27 Dec 2005 14:46:42 -0000 1.4
+++ ContextCapabilitiesGenerator.java 6 Feb 2006 11:11:09 -0000 1.5
@@ -85,6 +85,19 @@
return EXTENSION_PREFIX + interface_name;
}
+ public static void generateSuperClassAdds(PrintWriter writer, InterfaceDeclaration d) {
+ Collection<InterfaceType> super_interfaces = d.getSuperinterfaces();
+ if (super_interfaces.size() > 1)
+ throw new RuntimeException(d + " extends more than one other interface");
+ if (super_interfaces.size() == 1) {
+ InterfaceType super_interface = super_interfaces.iterator().next();
+ writer.print("\t\tif (" + CACHED_EXTS_VAR_NAME + ".contains(\"");
+ writer.println(translateFieldName(d.getSimpleName()) + "\"))");
+ writer.print("\t\t\t");
+ generateAddExtension(writer, super_interface.getDeclaration());
+ }
+ }
+
public static void generateInitializer(PrintWriter writer, InterfaceDeclaration d) {
String translated_field_name = translateFieldName(d.getSimpleName());
writer.print("\t\tthis." + translated_field_name + " = ");
@@ -145,13 +158,13 @@
writer.println(translateFieldName(d.getSimpleName()) + "\");");
} else {
writer.print("\t\tGLContext." + Utils.STUB_INITIALIZER_NAME + "(" + Utils.getSimpleClassName(d));
- writer.println(".class, supported_extensions, \"" + translateFieldName(d.getSimpleName()) + "\");");
+ writer.println(".class, " + CACHED_EXTS_VAR_NAME + ", \"" + translateFieldName(d.getSimpleName()) + "\");");
}
}
}
- public static void generateAddExtension(PrintWriter writer, InterfaceDeclaration d) {
- writer.print("\t\t" + CACHED_EXTS_VAR_NAME + ".add(\"");
+ private static void generateAddExtension(PrintWriter writer, InterfaceDeclaration d) {
+ writer.print(CACHED_EXTS_VAR_NAME + ".add(\"");
writer.println(translateFieldName(d.getSimpleName()) + "\");");
}
|