From: Elias N. <eli...@us...> - 2006-02-06 11:11:22
|
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()) + "\");"); } |