You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(134) |
Sep
(52) |
Oct
(13) |
Nov
(342) |
Dec
(163) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(44) |
Feb
(62) |
Mar
(158) |
Apr
(38) |
May
(70) |
Jun
(58) |
Jul
(104) |
Aug
(207) |
Sep
(83) |
Oct
(122) |
Nov
(23) |
Dec
(49) |
2004 |
Jan
(119) |
Feb
(132) |
Mar
(192) |
Apr
(140) |
May
(77) |
Jun
(74) |
Jul
(201) |
Aug
(63) |
Sep
(102) |
Oct
(70) |
Nov
(173) |
Dec
(78) |
2005 |
Jan
(174) |
Feb
(197) |
Mar
(105) |
Apr
(59) |
May
(77) |
Jun
(43) |
Jul
(21) |
Aug
(18) |
Sep
(47) |
Oct
(37) |
Nov
(74) |
Dec
(50) |
2006 |
Jan
(44) |
Feb
(19) |
Mar
(32) |
Apr
(24) |
May
(31) |
Jun
(55) |
Jul
(138) |
Aug
(28) |
Sep
(12) |
Oct
(41) |
Nov
(58) |
Dec
(24) |
2007 |
Jan
(28) |
Feb
(14) |
Mar
(10) |
Apr
(68) |
May
(30) |
Jun
(26) |
Jul
(18) |
Aug
(63) |
Sep
(19) |
Oct
(29) |
Nov
(20) |
Dec
(10) |
2008 |
Jan
(38) |
Feb
(7) |
Mar
(37) |
Apr
(120) |
May
(41) |
Jun
(36) |
Jul
(39) |
Aug
(24) |
Sep
(28) |
Oct
(30) |
Nov
(36) |
Dec
(75) |
2009 |
Jan
(46) |
Feb
(22) |
Mar
(50) |
Apr
(70) |
May
(134) |
Jun
(105) |
Jul
(75) |
Aug
(34) |
Sep
(38) |
Oct
(34) |
Nov
(19) |
Dec
(20) |
2010 |
Jan
(11) |
Feb
(20) |
Mar
(65) |
Apr
(83) |
May
(104) |
Jun
(73) |
Jul
(78) |
Aug
(57) |
Sep
(43) |
Oct
(35) |
Nov
(9) |
Dec
(4) |
2011 |
Jan
(21) |
Feb
(11) |
Mar
(18) |
Apr
(10) |
May
(18) |
Jun
(15) |
Jul
(48) |
Aug
(25) |
Sep
(17) |
Oct
(45) |
Nov
(15) |
Dec
(12) |
2012 |
Jan
(21) |
Feb
(9) |
Mar
(12) |
Apr
(9) |
May
(9) |
Jun
(5) |
Jul
(1) |
Aug
(10) |
Sep
(12) |
Oct
(1) |
Nov
(28) |
Dec
(5) |
2013 |
Jan
(4) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2015 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
|
2016 |
Jan
(2) |
Feb
(1) |
Mar
(1) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(1) |
Aug
(2) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
2017 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sp...@us...> - 2010-07-27 16:20:43
|
Revision: 3393 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3393&view=rev Author: spasi Date: 2010-07-27 16:20:37 +0000 (Tue, 27 Jul 2010) Log Message: ----------- ARBDebugOutputCallback header. Modified Paths: -------------- trunk/LWJGL/build.xml Modified: trunk/LWJGL/build.xml =================================================================== --- trunk/LWJGL/build.xml 2010-07-27 15:33:22 UTC (rev 3392) +++ trunk/LWJGL/build.xml 2010-07-27 16:20:37 UTC (rev 3393) @@ -252,6 +252,7 @@ <class name="org.lwjgl.opengl.GLContext" /> <class name="org.lwjgl.opengl.Pbuffer" /> <class name="org.lwjgl.opengl.AMDDebugOutputCallback" /> + <class name="org.lwjgl.opengl.ARBDebugOutputCallback" /> </javah> </target> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2010-07-27 15:33:29
|
Revision: 3392 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3392&view=rev Author: spasi Date: 2010-07-27 15:33:22 +0000 (Tue, 27 Jul 2010) Log Message: ----------- Added support for OpenGL 4.1 and new extensions. Modified Paths: -------------- trunk/LWJGL/platform_build/build-generator.xml trunk/LWJGL/src/java/org/lwjgl/opengl/AMDDebugOutputCallback.java trunk/LWJGL/src/java/org/lwjgl/opengl/AMDDebugOutputUtil.java trunk/LWJGL/src/java/org/lwjgl/opengl/ContextAttribs.java trunk/LWJGL/src/java/org/lwjgl/opengl/GLContext.java trunk/LWJGL/src/java/org/lwjgl/util/generator/GLTypeMap.java trunk/LWJGL/src/native/common/extgl.h trunk/LWJGL/src/native/common/org_lwjgl_opengl_AMDDebugOutputCallback.c trunk/LWJGL/src/templates/org/lwjgl/opengl/EXT_direct_state_access.java trunk/LWJGL/src/templates/org/lwjgl/opengl/GL40.java Added Paths: ----------- trunk/LWJGL/src/java/org/lwjgl/opengl/ARBDebugOutputCallback.java trunk/LWJGL/src/java/org/lwjgl/opengl/ARBDebugOutputUtil.java trunk/LWJGL/src/native/common/org_lwjgl_opengl_ARBDebugOutputCallback.c trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_ES2_compatibility.java trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_debug_output.java trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_get_program_binary.java trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_robustness.java trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_separate_shader_objects.java trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_shader_precision.java trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_shader_stencil_export.java trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_vertex_attrib_64bit.java trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_viewport_array.java trunk/LWJGL/src/templates/org/lwjgl/opengl/GL41.java Modified: trunk/LWJGL/platform_build/build-generator.xml =================================================================== --- trunk/LWJGL/platform_build/build-generator.xml 2010-07-25 14:22:09 UTC (rev 3391) +++ trunk/LWJGL/platform_build/build-generator.xml 2010-07-27 15:33:22 UTC (rev 3392) @@ -7,7 +7,7 @@ <fileset dir="${lwjgl.src.native}/generated" includes="**"/> </delete> </target> - + <!-- Compiles the Java generator source code --> <target name="generators" description="Compiles the native method generators"> <javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" includes="org/lwjgl/util/generator/**.java" source="1.5" target="1.5" taskname="generator"> @@ -17,6 +17,7 @@ <javac debug="yes" srcdir="${lwjgl.src}/java/" destdir="${lwjgl.bin}" source="1.4" target="1.4" taskname="generator"> <include name="org/lwjgl/opengl/GLSync.java"/> <include name="org/lwjgl/opengl/AMDDebugOutputCallback.java"/> + <include name="org/lwjgl/opengl/ARBDebugOutputCallback.java"/> <include name="org/lwjgl/opengl/PointerWrapper.java"/> </javac> </target> @@ -42,7 +43,7 @@ <fileset dir="${lwjgl.src.templates}" includes="org/lwjgl/openal/AL10.java, org/lwjgl/openal/AL11.java, org/lwjgl/openal/EFX10.java"/> </apply> </target> - + <!-- Generate OpenAL [DEBUG] --> <target name="generate-openal-debug" depends="generators" description="Generates java and native source for AL"> <apply executable="apt" parallel="true"> @@ -111,7 +112,7 @@ <fileset dir="${lwjgl.src.templates}" includes="${opengl-template-pattern}"/> </apply> </target> - + <!-- Generate context capabilities --> <target name="generate-opengl-capabilities" depends="generators" description="Generates java and native source for GL"> <apply executable="apt" parallel="true"> @@ -125,8 +126,8 @@ <arg value="-Acontextspecific"/> <fileset dir="${lwjgl.src.templates}" includes="${opengl-template-pattern}"/> </apply> - </target> - + </target> + <!-- Generate context capabilities [DEBUG] --> <target name="generate-opengl-capabilities-debug" depends="generators" description="Generates java and native source for GL"> <apply executable="apt" parallel="true"> @@ -141,5 +142,5 @@ <arg value="-Acontextspecific"/> <fileset dir="${lwjgl.src.templates}" includes="${opengl-template-pattern}"/> </apply> - </target> + </target> </project> Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/AMDDebugOutputCallback.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/AMDDebugOutputCallback.java 2010-07-25 14:22:09 UTC (rev 3391) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/AMDDebugOutputCallback.java 2010-07-27 15:33:22 UTC (rev 3392) @@ -59,7 +59,7 @@ private final long pointer; /** - * Creates a AMDDebugOutputCallback with a default callback handler. + * Creates an AMDDebugOutputCallback with a default callback handler. * The default handler will simply print the message on System.err. */ public AMDDebugOutputCallback() { @@ -120,7 +120,7 @@ } /** - * Creates a AMDDebugOutputCallback with the specified callback handlers. + * Creates an AMDDebugOutputCallback with the specified callback handlers. * The handler's {@code handleMessage} method will be called whenever * debug output is generated by the GL. * Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/AMDDebugOutputUtil.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/AMDDebugOutputUtil.java 2010-07-25 14:22:09 UTC (rev 3391) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/AMDDebugOutputUtil.java 2010-07-27 15:33:22 UTC (rev 3392) @@ -28,7 +28,7 @@ if ( !ctx.getContextAttribs().isDebug() ) throw new IllegalStateException("The current context is not a debug context."); - if ( !GLContext.getCapabilities().GL_AMD_debug_output ) + if ( !GLContext.getCapabilities().GL_AMD_debug_output ) throw new IllegalStateException("AMD_debug_output is not supported."); handlers.put(ctx, handler); Added: trunk/LWJGL/src/java/org/lwjgl/opengl/ARBDebugOutputCallback.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/ARBDebugOutputCallback.java (rev 0) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/ARBDebugOutputCallback.java 2010-07-27 15:33:22 UTC (rev 3392) @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions 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 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.lwjgl.opengl; + +/** + * Instances of this class are needed to use the callback functionality of the ARB_debug_output extension. + * A debug context must be current before creating instances of this class. Users of this class may provide + * implementations of the {@code Handler} interface to receive notifications. The same {@code Handler} + * instance may be used by different contexts but it is not recommended. Handler notifications are synchronized. + * + * @author Spasi + */ +public final class ARBDebugOutputCallback implements PointerWrapper { + + /** Severity levels. */ + private static final int + GL_DEBUG_SEVERITY_HIGH_ARB = 0x9146, + GL_DEBUG_SEVERITY_MEDIUM_ARB = 0x9147, + GL_DEBUG_SEVERITY_LOW_ARB = 0x9148; + + /** Sources. */ + private static final int + GL_DEBUG_SOURCE_API_ARB = 0x8246, + GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB = 0x8247, + GL_DEBUG_SOURCE_SHADER_COMPILER_ARB = 0x8248, + GL_DEBUG_SOURCE_THIRD_PARTY_ARB = 0x8249, + GL_DEBUG_SOURCE_APPLICATION_ARB = 0x824A, + GL_DEBUG_SOURCE_OTHER_ARB = 0x824B; + + /** Types. */ + private static final int + GL_DEBUG_TYPE_ERROR_ARB = 0x824C, + GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB = 0x824D, + GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB = 0x824E, + GL_DEBUG_TYPE_PORTABILITY_ARB = 0x824F, + GL_DEBUG_TYPE_PERFORMANCE_ARB = 0x8250, + GL_DEBUG_TYPE_OTHER_ARB = 0x8251; + + private final long pointer; + + /** + * Creates an ARBDebugOutputCallback with a default callback handler. + * The default handler will simply print the message on System.err. + */ + public ARBDebugOutputCallback() { + this(new Handler() { + public void handleMessage(final int source, final int type, final int id, final int severity, final String message) { + System.err.println("[LWJGL] ARB_debug_output message"); + System.err.println("\tID: " + id); + + String description; + switch ( source ) { + case GL_DEBUG_SOURCE_API_ARB: + description = "API"; + break; + case GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB: + description = "WINDOW SYSTEM"; + break; + case GL_DEBUG_SOURCE_SHADER_COMPILER_ARB: + description = "SHADER COMPILER"; + break; + case GL_DEBUG_SOURCE_THIRD_PARTY_ARB: + description = "THIRD PARTY"; + break; + case GL_DEBUG_SOURCE_APPLICATION_ARB: + description = "APPLICATION"; + break; + case GL_DEBUG_SOURCE_OTHER_ARB: + description = "OTHER"; + break; + default: + description = "Unknown (" + Integer.toHexString(source) + ")"; + } + System.err.println("\tSource: " + description); + + switch ( type ) { + case GL_DEBUG_TYPE_ERROR_ARB: + description = "ERROR"; + break; + case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB: + description = "DEPRECATED BEHAVIOR"; + break; + case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB: + description = "UNDEFINED BEHAVIOR"; + break; + case GL_DEBUG_TYPE_PORTABILITY_ARB: + description = "PORTABILITY"; + break; + case GL_DEBUG_TYPE_PERFORMANCE_ARB: + description = "PERFORMANCE"; + break; + case GL_DEBUG_TYPE_OTHER_ARB: + description = "OTHER"; + break; + default: + description = "Unknown (" + Integer.toHexString(source) + ")"; + } + System.err.println("\tType: " + description); + + switch ( severity ) { + case GL_DEBUG_SEVERITY_HIGH_ARB: + description = "HIGH"; + break; + case GL_DEBUG_SEVERITY_MEDIUM_ARB: + description = "MEDIUM"; + break; + case GL_DEBUG_SEVERITY_LOW_ARB: + description = "LOW"; + break; + default: + description = "Unknown (" + Integer.toHexString(source) + ")"; + } + System.err.println("\tSeverity: " + description); + + System.err.println("\tMessage: " + message); + } + }); + } + + /** + * Creates an ARBDebugOutputCallback with the specified callback handlers. + * The handler's {@code handleMessage} method will be called whenever + * debug output is generated by the GL. + * + * @param handler the callback handler + */ + public ARBDebugOutputCallback(final Handler handler) { + try { + // We have to call registerHandler reflectively because we need this class to compile before we run the Generator. + // The registerHandler method depends on org.lwjgl.opengl.Context, if we touched that we would need to compile + // the whole library (which is not possible). + Class.forName("org.lwjgl.opengl.ARBDebugOutputUtil").getMethod("registerHandler", new Class[] { Handler.class }).invoke(null, new Object[] { handler }); + } catch (Exception e) { + throw new RuntimeException(e.getCause() != null ? e.getCause() : e); + } + this.pointer = getFunctionPointer(); + } + + public long getPointer() { + return pointer; + } + + private static native long getFunctionPointer(); + + /** Implementations of this interface can be used to receive ARB_debug_output notifications. */ + public interface Handler { + + /** + * This method will be called when an AMD_debug_output message is generated. + * + * @param id the message ID + * @param source the message source + * @param type the message type + * @param severity the message severity + * @param message the string representation of the message. + */ + void handleMessage(int source, int type, int id, int severity, String message); + + } + +} \ No newline at end of file Added: trunk/LWJGL/src/java/org/lwjgl/opengl/ARBDebugOutputUtil.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/ARBDebugOutputUtil.java (rev 0) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/ARBDebugOutputUtil.java 2010-07-27 15:33:22 UTC (rev 3392) @@ -0,0 +1,60 @@ +package org.lwjgl.opengl; + +import org.lwjgl.opengl.ARBDebugOutputCallback.Handler; + +import java.nio.ByteBuffer; +import java.util.Map; +import java.util.WeakHashMap; + +/** + * This class handles ARBDebugOutputCallback.Handler registration and notification. + * We could have put this in ARBDebugOutputCallback, but we need to compile it for + * the generator. Registration is done reflectively in the ARBDebugOutputCallback + * constructor. + * + * @author Spasi + */ +final class ARBDebugOutputUtil { + + private static final Map handlers = new WeakHashMap(); + + private ARBDebugOutputUtil() {} + + public static void registerHandler(final Handler handler) { + final Context ctx = Context.getCurrentContext(); + if ( ctx == null ) + throw new IllegalStateException("No context is current."); + + if ( !ctx.getContextAttribs().isDebug() ) + throw new IllegalStateException("The current context is not a debug context."); + + if ( !GLContext.getCapabilities().GL_ARB_debug_output ) + throw new IllegalStateException("ARB_debug_output is not supported."); + + handlers.put(ctx, handler); + } + + /** + * This method is called by native code. If finds the callback handler associated + * with the current Thread and calls its {@code handleMessage} method. + * + * @param source the message source + * @param type the message type + * @param id the message ID + * @param severity the message severity + * @param message the string representation of the message. + * @param userParam the user-specified data specified in glDebugMessageCallbackAMD. For the current implementation this is always null and we ignore it. + */ + private static void messageCallback(final int source, final int type, final int id, final int severity, final String message, final ByteBuffer userParam) { + synchronized ( GlobalLock.lock ) { + final Context ctx = Context.getCurrentContext(); + if ( ctx == null ) + return; + + final Handler handler = (Handler)handlers.get(ctx); + if ( handler != null ) + handler.handleMessage(source, type, id, severity, message); + } + } + +} \ No newline at end of file Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/ContextAttribs.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/ContextAttribs.java 2010-07-25 14:22:09 UTC (rev 3391) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/ContextAttribs.java 2010-07-27 15:33:22 UTC (rev 3392) @@ -56,6 +56,13 @@ */ public final class ContextAttribs { + // Same values for GLX & WGL + private static final int CONTEXT_ROBUST_ACCESS_BIT_ARB = 0x00000004; + private static final int CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB = 0x8256; + private static final int + NO_RESET_NOTIFICATION_ARB = 0x8261, + LOSE_CONTEXT_ON_RESET_ARB = 0x8252; + private int majorVersion; private int minorVersion; @@ -63,10 +70,13 @@ private boolean debug; private boolean forwardCompatible; + private boolean robustAccess; private boolean profileCore; private boolean profileCompatibility; + private boolean loseContextOnReset; + public ContextAttribs() { this(1, 0); } @@ -82,14 +92,6 @@ this.majorVersion = majorVersion; this.minorVersion = minorVersion; - - this.layerPlane = 0; - - this.debug = false; - this.forwardCompatible = false; - - this.profileCore = false; - this.profileCompatibility = false; } private ContextAttribs(final ContextAttribs attribs) { @@ -100,9 +102,12 @@ this.debug = attribs.debug; this.forwardCompatible = attribs.forwardCompatible; + this.robustAccess = attribs.robustAccess; this.profileCore = attribs.profileCore; this.profileCompatibility = attribs.profileCompatibility; + + this.loseContextOnReset = attribs.loseContextOnReset; } public int getMajorVersion() { @@ -193,6 +198,24 @@ return attribs; } + /** + * Returns a ContextAttribs instance with CONTEXT_RESET_NOTIFICATION_STRATEGY set + * to LOSE_CONTEXT_ON_RESET if the parameter is true or to NO_RESET_NOTIFICATION + * if the parameter is false. + * + * @param loseContextOnReset + * + * @return the new ContextAttribs + */ + public ContextAttribs withLoseContextOnReset(final boolean loseContextOnReset) { + if ( loseContextOnReset == this.loseContextOnReset ) + return this; + + final ContextAttribs attribs = new ContextAttribs(this); + attribs.loseContextOnReset = loseContextOnReset; + return attribs; + } + private static ContextAttribsImplementation getImplementation() { switch ( LWJGLUtil.getPlatform() ) { case LWJGLUtil.PLATFORM_LINUX: @@ -221,6 +244,8 @@ flags |= implementation.getDebugBit(); if ( forwardCompatible ) flags |= implementation.getForwardCompatibleBit(); + if ( robustAccess ) + flags |= CONTEXT_ROBUST_ACCESS_BIT_ARB; if ( 0 < flags ) attribCount++; @@ -247,6 +272,8 @@ attribs.put(implementation.getFlagsAttrib()).put(flags); if ( 0 < profileMask ) attribs.put(implementation.getProfileMaskAttrib()).put(profileMask); + if ( loseContextOnReset ) + attribs.put(CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB).put(LOSE_CONTEXT_ON_RESET_ARB); attribs.put(0); attribs.rewind(); @@ -261,6 +288,9 @@ sb.append(" - Layer=").append(layerPlane); sb.append(" - Debug=").append(debug); sb.append(" - ForwardCompatible=").append(forwardCompatible); + sb.append(" - RobustAccess=").append(robustAccess); + if ( robustAccess ) + sb.append(" (").append(loseContextOnReset ? "LOSE_CONTEXT_ON_RESET" : "NO_RESET_NOTIFICATION"); sb.append(" - Profile="); if ( profileCore ) sb.append("Core"); Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/GLContext.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/GLContext.java 2010-07-25 14:22:09 UTC (rev 3391) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/GLContext.java 2010-07-27 15:33:22 UTC (rev 3392) @@ -215,38 +215,22 @@ LWJGLUtil.log("The major and/or minor OpenGL version is malformed: " + e.getMessage()); } - // ----------------------[ 4.X ]---------------------- - if ( 4 <= majorVersion ) - supported_extensions.add("OpenGL40"); + final int[][] GL_VERSIONS = { + { 1, 2, 3, 4, 5 }, // OpenGL 1 + { 0, 1 }, // OpenGL 2 + { 0, 1, 2, 3 }, // OpenGL 3 + { 0, 1 }, // OpenGL 4 + }; - // ----------------------[ 3.X ]---------------------- - if ( 3 < majorVersion || (3 == majorVersion && 3 <= minorVersion) ) - supported_extensions.add("OpenGL33"); - if ( 3 < majorVersion || (3 == majorVersion && 2 <= minorVersion) ) - supported_extensions.add("OpenGL32"); - if ( 3 < majorVersion || (3 == majorVersion && 1 <= minorVersion) ) - supported_extensions.add("OpenGL31"); - if ( 3 <= majorVersion ) - supported_extensions.add("OpenGL30"); + for ( int major = 1; major <= GL_VERSIONS.length; major++ ) { + int[] minors = GL_VERSIONS[major - 1]; + for ( int i = 0; i < minors.length; i++ ) { + int minor = minors[i]; + if ( major < majorVersion || (major == majorVersion && minor <= minorVersion) ) + supported_extensions.add("OpenGL" + Integer.toString(major) + Integer.toString(minor)); + } + } - // ----------------------[ 2.X ]---------------------- - if ( 2 < majorVersion || (2 == majorVersion && 1 <= minorVersion) ) - supported_extensions.add("OpenGL21"); - if ( 2 <= majorVersion ) - supported_extensions.add("OpenGL20"); - - // ----------------------[ 1.X ]---------------------- - if ( 1 < majorVersion || 5 <= minorVersion ) - supported_extensions.add("OpenGL15"); - if ( 1 < majorVersion || 4 <= minorVersion ) - supported_extensions.add("OpenGL14"); - if ( 1 < majorVersion || 3 <= minorVersion ) - supported_extensions.add("OpenGL13"); - if ( 1 < majorVersion || 2 <= minorVersion ) - supported_extensions.add("OpenGL12"); - if ( 1 < majorVersion || 1 <= minorVersion ) - supported_extensions.add("OpenGL11"); - int profileMask = 0; if ( majorVersion < 3 ) { Modified: trunk/LWJGL/src/java/org/lwjgl/util/generator/GLTypeMap.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/generator/GLTypeMap.java 2010-07-25 14:22:09 UTC (rev 3391) +++ trunk/LWJGL/src/java/org/lwjgl/util/generator/GLTypeMap.java 2010-07-27 15:33:22 UTC (rev 3392) @@ -133,9 +133,9 @@ return "s"; else if ( annotation_type.equals(GLubyte.class) || annotation_type.equals(GLbyte.class) ) return "b"; - else if ( annotation_type.equals(GLfloat.class) ) + else if ( annotation_type.equals(GLfloat.class) || annotation_type.equals(GLclampf.class) ) return "f"; - else if ( annotation_type.equals(GLdouble.class) ) + else if ( annotation_type.equals(GLdouble.class) || annotation_type.equals(GLclampd.class) ) return "d"; else if ( annotation_type.equals(GLhalf.class) ) return "h"; Modified: trunk/LWJGL/src/native/common/extgl.h =================================================================== --- trunk/LWJGL/src/native/common/extgl.h 2010-07-25 14:22:09 UTC (rev 3391) +++ trunk/LWJGL/src/native/common/extgl.h 2010-07-27 15:33:22 UTC (rev 3392) @@ -136,6 +136,9 @@ /* AMD_debug_output callback function pointer. */ typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam); +/* ARB_debug_output callback function pointer. */ +typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam); + /* helper stuff */ /* initializes everything, call this right after the rc is created. the function returns true if successful */ Modified: trunk/LWJGL/src/native/common/org_lwjgl_opengl_AMDDebugOutputCallback.c =================================================================== --- trunk/LWJGL/src/native/common/org_lwjgl_opengl_AMDDebugOutputCallback.c 2010-07-25 14:22:09 UTC (rev 3391) +++ trunk/LWJGL/src/native/common/org_lwjgl_opengl_AMDDebugOutputCallback.c 2010-07-27 15:33:22 UTC (rev 3392) @@ -41,7 +41,11 @@ #include "extgl.h" #include "org_lwjgl_opengl_AMDDebugOutputCallback.h" -static void APIENTRY debugOutputCallback(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam) { +static jclass debugOutputCallbackClassAMD; +static jmethodID debugOutputCallbackMethodAMD; + +static void APIENTRY debugOutputCallbackAMD(GLuint id, GLenum category, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam) { + /* jclass callback_class; jmethodID callback_method; JNIEnv *env = getThreadEnv(); @@ -60,8 +64,25 @@ } } } + */ + + JNIEnv *env = getThreadEnv(); + if ( env != NULL && !(*env)->ExceptionOccurred(env) && debugOutputCallbackMethodAMD != NULL ) { + (*env)->CallStaticVoidMethod(env, debugOutputCallbackClassAMD, debugOutputCallbackMethodAMD, + (jint)id, + (jint)category, + (jint)severity, + NewStringNativeWithLength(env, message, length), + NULL // Ignoring user param, pointless for our implementation + ); + } } JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_AMDDebugOutputCallback_getFunctionPointer(JNIEnv *env, jclass clazz) { - return (jlong)(intptr_t)&debugOutputCallback; + // Cache the callback class and methodID + debugOutputCallbackClassAMD = (*env)->FindClass(env, "org/lwjgl/opengl/AMDDebugOutputUtil"); + if ( debugOutputCallbackClassAMD != NULL ) + debugOutputCallbackMethodAMD = (*env)->GetStaticMethodID(env, debugOutputCallbackClassAMD, "messageCallback", "(IIILjava/lang/String;Ljava/nio/ByteBuffer;)V"); + + return (jlong)(intptr_t)&debugOutputCallbackAMD; } Added: trunk/LWJGL/src/native/common/org_lwjgl_opengl_ARBDebugOutputCallback.c =================================================================== --- trunk/LWJGL/src/native/common/org_lwjgl_opengl_ARBDebugOutputCallback.c (rev 0) +++ trunk/LWJGL/src/native/common/org_lwjgl_opengl_ARBDebugOutputCallback.c 2010-07-27 15:33:22 UTC (rev 3392) @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions 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 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * JNI implementation of the AMD_debug_output function callback. + * + * @author Spasi + */ + +#include <jni.h> +#include "common_tools.h" +#include "extgl.h" +#include "org_lwjgl_opengl_ARBDebugOutputCallback.h" + +static jclass debugOutputCallbackClassARB; +static jmethodID debugOutputCallbackMethodARB; + +static void APIENTRY debugOutputCallbackARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam) { + JNIEnv *env = getThreadEnv(); + if ( env != NULL && !(*env)->ExceptionOccurred(env) && debugOutputCallbackMethodARB != NULL ) { + (*env)->CallStaticVoidMethod(env, debugOutputCallbackClassARB, debugOutputCallbackMethodARB, + (jint)source, + (jint)type, + (jint)id, + (jint)severity, + NewStringNativeWithLength(env, message, length), + NULL // Ignoring user param, pointless for our implementation + ); + } +} + +JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_ARBDebugOutputCallback_getFunctionPointer(JNIEnv *env, jclass clazz) { + // Cache the callback class and methodID + debugOutputCallbackClassARB = (*env)->FindClass(env, "org/lwjgl/opengl/ARBDebugOutputUtil"); + if ( debugOutputCallbackClassARB != NULL ) + debugOutputCallbackMethodARB = (*env)->GetStaticMethodID(env, debugOutputCallbackClassARB, "messageCallback", "(IIIILjava/lang/String;Ljava/nio/ByteBuffer;)V"); + + return (jlong)(intptr_t)&debugOutputCallbackARB; +} Added: trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_ES2_compatibility.java =================================================================== --- trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_ES2_compatibility.java (rev 0) +++ trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_ES2_compatibility.java 2010-07-27 15:33:22 UTC (rev 3392) @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions 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 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.lwjgl.opengl; + +import org.lwjgl.util.generator.*; + +import java.nio.ByteBuffer; +import java.nio.IntBuffer; + +public interface ARB_ES2_compatibility { + + /** + * Accepted by the <value> parameter of GetBooleanv, GetIntegerv, + * GetInteger64v, GetFloatv, and GetDoublev: + */ + int GL_SHADER_COMPILER = 0x8DFA, + GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9, + GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB, + GL_MAX_VARYING_VECTORS = 0x8DFC, + GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD, + GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A, + GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B; + + /** Accepted by the <type> parameter of VertexAttribPointer: */ + int GL_FIXED = 0x140C; + + /** + * Accepted by the <precisiontype> parameter of + * GetShaderPrecisionFormat: + */ + int GL_LOW_FLOAT = 0x8DF0, + GL_MEDIUM_FLOAT = 0x8DF1, + GL_HIGH_FLOAT = 0x8DF2, + GL_LOW_INT = 0x8DF3, + GL_MEDIUM_INT = 0x8DF4, + GL_HIGH_INT = 0x8DF5; + + void glReleaseShaderCompiler(); + + void glShaderBinary(@AutoSize("shaders") @GLsizei int count, @Const @GLuint IntBuffer shaders, + @GLenum int binaryformat, @Const @GLvoid ByteBuffer binary, @AutoSize("binary") @GLsizei int length); + + void glGetShaderPrecisionFormat(@GLenum int shadertype, @GLenum int precisiontype, + @OutParameter @Check("2") IntBuffer range, + @OutParameter @Check("1") IntBuffer precision); + + void glDepthRangef(@GLclampf float n, @GLclampf float f); + + void glClearDepthf(@GLclampf float d); + +} \ No newline at end of file Added: trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_debug_output.java =================================================================== --- trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_debug_output.java (rev 0) +++ trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_debug_output.java 2010-07-27 15:33:22 UTC (rev 3392) @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions 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 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.lwjgl.opengl; + +import org.lwjgl.util.generator.*; + +import java.nio.ByteBuffer; +import java.nio.IntBuffer; + +public interface ARB_debug_output { + + /** + * Tokens accepted by the <target> parameters of Enable, Disable, + * and IsEnabled: + */ + int GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB = 0x8242; + + /** + * Tokens accepted by the <value> parameters of GetBooleanv, + * GetIntegerv, GetFloatv, and GetDoublev: + */ + int GL_MAX_DEBUG_MESSAGE_LENGTH_ARB = 0x9143, + GL_MAX_DEBUG_LOGGED_MESSAGES_ARB = 0x9144, + GL_DEBUG_LOGGED_MESSAGES_ARB = 0x9145, + GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB = 0x8243; + + /** Tokens accepted by the <pname> parameter of GetPointerv: */ + int GL_DEBUG_CALLBACK_FUNCTION_ARB = 0x8244, + GL_DEBUG_CALLBACK_USER_PARAM_ARB = 0x8245; + + /** + * Tokens accepted or provided by the <source> parameters of + * DebugMessageControlARB, DebugMessageInsertARB and DEBUGPROCARB, + * and the <sources> parameter of GetDebugMessageLogARB: + */ + int GL_DEBUG_SOURCE_API_ARB = 0x8246, + GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB = 0x8247, + GL_DEBUG_SOURCE_SHADER_COMPILER_ARB = 0x8248, + GL_DEBUG_SOURCE_THIRD_PARTY_ARB = 0x8249, + GL_DEBUG_SOURCE_APPLICATION_ARB = 0x824A, + GL_DEBUG_SOURCE_OTHER_ARB = 0x824B; + + /** + * Tokens accepted or provided by the <type> parameters of + * DebugMessageControlARB, DebugMessageInsertARB and DEBUGPROCARB, + * and the <types> parameter of GetDebugMessageLogARB: + */ + int GL_DEBUG_TYPE_ERROR_ARB = 0x824C, + GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB = 0x824D, + GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB = 0x824E, + GL_DEBUG_TYPE_PORTABILITY_ARB = 0x824F, + GL_DEBUG_TYPE_PERFORMANCE_ARB = 0x8250, + GL_DEBUG_TYPE_OTHER_ARB = 0x8251; + + /** + * Tokens accepted or provided by the <severity> parameters of + * DebugMessageControlARB, DebugMessageInsertARB and DEBUGPROCARB + * callback functions, and the <severities> parameter of + * GetDebugMessageLogARB: + */ + int GL_DEBUG_SEVERITY_HIGH_ARB = 0x9146, + GL_DEBUG_SEVERITY_MEDIUM_ARB = 0x9147, + GL_DEBUG_SEVERITY_LOW_ARB = 0x9148; + + void glDebugMessageControlARB(@GLenum int source, + @GLenum int type, + @GLenum int severity, + @AutoSize(value = "ids", canBeNull = true) @GLsizei int count, + @Check(canBeNull = true) @Const @GLuint IntBuffer ids, + boolean enabled); + + void glDebugMessageInsertARB(@GLenum int source, @GLenum int type, @GLuint int id, @GLenum int severity, @AutoSize("buf") @GLsizei int length, @Const @GLchar ByteBuffer buf); + + @Alternate("glDebugMessageInsertARB") + void glDebugMessageInsertARB(@GLenum int source, @GLenum int type, @GLuint int id, @GLenum int severity, @Constant("buf.length()") @GLsizei int length, CharSequence buf); + + void glDebugMessageCallbackARB(@GLpointer(value = "GLDEBUGPROCARB", canBeNull = true) ARBDebugOutputCallback callback, @Check(canBeNull = true) @GLvoid ByteBuffer userParam); + + @GLuint + int glGetDebugMessageLogARB(@GLuint int count, + @AutoSize(value = "messageLog", canBeNull = true) @GLsizei int logSize, + @Check(value = "count", canBeNull = true) @GLenum IntBuffer sources, + @Check(value = "count", canBeNull = true) @GLenum IntBuffer types, + @Check(value = "count", canBeNull = true) @GLuint IntBuffer ids, + @Check(value = "count", canBeNull = true) @GLenum IntBuffer severities, + @Check(value = "count", canBeNull = true) @GLsizei IntBuffer lengths, + @Check(canBeNull = true) @OutParameter @GLchar ByteBuffer messageLog); + + // Not really useful and a pain to implement in Java + //void glGetPointerv(@GLenum int pname, void**params); + +} \ No newline at end of file Added: trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_get_program_binary.java =================================================================== --- trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_get_program_binary.java (rev 0) +++ trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_get_program_binary.java 2010-07-27 15:33:22 UTC (rev 3392) @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions 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 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.lwjgl.opengl; + +import org.lwjgl.util.generator.*; + +import java.nio.ByteBuffer; +import java.nio.IntBuffer; + +public interface ARB_get_program_binary { + + /** + * Accepted by the <pname> parameter of ProgramParameteri and + * GetProgramiv: + */ + int GL_PROGRAM_BINARY_RETRIEVABLE_HINT = 0x8257; + + /** Accepted by the <pname> parameter of GetProgramiv: */ + int GL_PROGRAM_BINARY_LENGTH = 0x8741; + + /** + * Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, + * GetInteger64v, GetFloatv and GetDoublev: + */ + int GL_NUM_PROGRAM_BINARY_FORMATS = 0x87FE, + GL_PROGRAM_BINARY_FORMATS = 0x87FF; + + void glGetProgramBinary(@GLuint int program, @AutoSize("binary") @GLsizei int bufSize, + @Check(value = "1", canBeNull = true) @GLsizei IntBuffer length, + @Check("1") @GLenum IntBuffer binaryFormat, + @OutParameter @GLvoid ByteBuffer binary); + + void glProgramBinary(@GLuint int program, @GLenum int binaryFormat, @Const @GLvoid ByteBuffer binary, @AutoSize("binary") @GLsizei int length); + + void glProgramParameteri(@GLuint int program, @GLenum int pname, int value); + +} \ No newline at end of file Added: trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_robustness.java =================================================================== --- trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_robustness.java (rev 0) +++ trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_robustness.java 2010-07-27 15:33:22 UTC (rev 3392) @@ -0,0 +1,190 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions 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 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.lwjgl.opengl; + +import org.lwjgl.util.generator.*; + +import java.nio.*; + +@Dependent +@DeprecatedGL +public interface ARB_robustness { + + /** Returned by GetGraphicsResetStatusARB: */ + int GL_NO_ERROR = 0x0000, + GL_GUILTY_CONTEXT_RESET_ARB = 0x8253, + GL_INNOCENT_CONTEXT_RESET_ARB = 0x8254, + GL_UNKNOWN_CONTEXT_RESET_ARB = 0x8255; + + /** + * Accepted by the <value> parameter of GetBooleanv, GetIntegerv, + * GetInteger64v, GetFloatv, and GetDoublev: + */ + int GL_RESET_NOTIFICATION_STRATEGY_ARB = 0x8256; + + /** + * Returned by GetIntegerv and related simple queries when + * <value> is RESET_NOTIFICATION_STRATEGY_ARB: + */ + int GL_LOSE_CONTEXT_ON_RESET_ARB = 0x8252, + GL_NO_RESET_NOTIFICATION_ARB = 0x8261; + + /** Returned by GetIntegerv when <pname> is CONTEXT_FLAGS: */ + int GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB = 0x00000004; + + @GLenum + int glGetGraphicsResetStatusARB(); + + @DeprecatedGL + void glGetnMapdvARB(@GLenum int target, @GLenum int query, @Constant("v.remaining() << 3") @GLsizei int bufSize, @OutParameter @Check DoubleBuffer v); + + @DeprecatedGL + void glGetnMapfvARB(@GLenum int target, @GLenum int query, @Constant("v.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check FloatBuffer v); + + @DeprecatedGL + void glGetnMapivARB(@GLenum int target, @GLenum int query, @Constant("v.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check IntBuffer v); + + @DeprecatedGL + void glGetnPixelMapfvARB(@GLenum int map, @Constant("values.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check FloatBuffer values); + + @DeprecatedGL + void glGetnPixelMapuivARB(@GLenum int map, @Constant("values.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check @GLuint IntBuffer values); + + @DeprecatedGL + void glGetnPixelMapusvARB(@GLenum int map, @Constant("values.remaining() << 1") @GLsizei int bufSize, @OutParameter @Check @GLushort ShortBuffer values); + + @DeprecatedGL + void glGetnPolygonStippleARB(@AutoSize("pattern") @GLsizei int bufSize, @OutParameter @GLubyte ByteBuffer pattern); + + void glGetnTexImageARB(@GLenum int target, int level, @GLenum int format, @GLenum int type, @AutoSize("img") @GLsizei int bufSize, + @OutParameter + @BufferObject(BufferKind.PackPBO) + @GLbyte + @GLshort + @GLint + @GLfloat + @GLdouble Buffer img); + + void glReadnPixelsARB(int x, int y, @GLsizei int width, @GLsizei int height, + @GLenum int format, @GLenum int type, @AutoSize("data") @GLsizei int bufSize, + @OutParameter + @BufferObject(BufferKind.PackPBO) + @GLbyte + @GLshort + @GLint + @GLfloat + @GLdouble Buffer data); + + @Dependent("GL_ARB_imaging") + void glGetnColorTableARB(@GLenum int target, @GLenum int format, @GLenum int type, @AutoSize("table") @GLsizei int bufSize, + @OutParameter + @GLbyte + @GLfloat + @GLdouble Buffer table); + + @Dependent("GL_ARB_imaging") + void glGetnConvolutionFilterARB(@GLenum int target, @GLenum int format, @GLenum int type, @AutoSize("image") @GLsizei int bufSize, + @OutParameter + @BufferObject(BufferKind.PackPBO) + @GLbyte + @GLshort + @GLint + @GLfloat + @GLdouble Buffer image); + + @Dependent("GL_ARB_imaging") + void glGetnSeparableFilterARB(@GLenum int target, @GLenum int format, @GLenum int type, + @AutoSize("row") @GLsizei int rowBufSize, + @OutParameter + @BufferObject(BufferKind.PackPBO) + @GLbyte + @GLshort + @GLint + @GLfloat + @GLdouble Buffer row, + @AutoSize("column") @GLsizei int columnBufSize, + @OutParameter + @BufferObject(BufferKind.PackPBO) + @GLbyte + @GLshort + @GLint + @GLfloat + @GLdouble Buffer column, + @OutParameter + @BufferObject(BufferKind.PackPBO) + @Check + @GLbyte + @GLshort + @GLint + @GLfloat + @GLdouble Buffer span); + + @Dependent("GL_ARB_imaging") + void glGetnHistogramARB(@GLenum int target, boolean reset, @GLenum int format, @GLenum int type, @AutoSize("values") @GLsizei int bufSize, + @OutParameter + @BufferObject(BufferKind.PackPBO) + @GLbyte + @GLshort + @GLint + @GLfloat + @GLdouble Buffer values); + + @Dependent("GL_ARB_imaging") + void glGetnMinmaxARB(@GLenum int target, boolean reset, @GLenum int format, @GLenum int type, @AutoSize("values") @GLsizei int bufSize, + @OutParameter + @BufferObject(BufferKind.PackPBO) + @GLbyte + @GLshort + @GLint + @GLfloat + @GLdouble Buffer values); + + @Dependent("OpenGL13") + void glGetnCompressedTexImageARB(@GLenum int target, int lod, @AutoSize("img") @GLsizei int bufSize, + @OutParameter + @BufferObject(BufferKind.PackPBO) + @GLbyte + @GLshort + @GLint Buffer img); + + @Dependent("OpenGL20") + void glGetnUniformfvARB(@GLuint int program, int location, @Constant("params.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check FloatBuffer params); + + @Dependent("OpenGL20") + void glGetnUniformivARB(@GLuint int program, int location, @Constant("params.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check IntBuffer params); + + @Dependent("OpenGL20") + void glGetnUniformuivARB(@GLuint int program, int location, @Constant("params.remaining() << 2") @GLsizei int bufSize, @OutParameter @Check @GLuint IntBuffer params); + + @Dependent("OpenGL20") + void glGetnUniformdvARB(@GLuint int program, int location, @Constant("params.remaining() << 3") @GLsizei int bufSize, @OutParameter @Check DoubleBuffer params); +} \ No newline at end of file Added: trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_separate_shader_objects.java =================================================================== --- trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_separate_shader_objects.java (rev 0) +++ trunk/LWJGL/src/templates/org/lwjgl/opengl/ARB_separate_shader_objects.java 2010-07-27 15:33:22 UTC (rev 3392) @@ -0,0 +1,269 @@ +/* + * Copyright (c) 2002-2008 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions 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 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.lwjgl.opengl; + +import org.lwjgl.util.generator.*; + +import java.nio.ByteBuffer; +import java.nio.DoubleBuffer; +import java.nio.FloatBuffer; +import java.nio.IntBuffer; + +@Extension(postfix = "") +public interface ARB_separate_shader_objects { + + /** Accepted by <stages> parameter to UseProgramStages: */ + int GL_VERTEX_SHADER_BIT = 0x00000001, + GL_FRAGMENT_SHADER_BIT = 0x00000002, + GL_GEOMETRY_SHADER_BIT = 0x00000004, + GL_TESS_CONTROL_SHADER_BIT = 0x00000008, + GL_TESS_EVALUATION_SHADER_BIT = 0x00000010, + GL_ALL_SHADER_BITS = 0xFFFFFFFF; + + /** + * Accepted by the <pname> parameter of ProgramParameteri and + * GetProgramiv: + */ + int GL_PROGRAM_SEPARABLE = 0x8258; + + /** Accepted by <type> parameter to GetProgramPipelineiv: */ + int GL_ACTIVE_PROGRAM = 0x8259; + + /** + * Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, + * GetInteger64v, GetFloatv, and GetDoublev: + */ + int GL_PROGRAM_PIPELINE_BINDING = 0x825A; + + void glUseProgramStages(@GLuint int pipeline, @GLbitfield int stages, @GLuint int program); + + void glActiveShaderProgram(@GLuint int pipeline, @GLuint int program); + + @StripPostfix(value = "strings", postfix = "v") + @GLuint + int glCreateShaderProgramv(@GLenum int type, @GLsizei int count, @Check @Const @Indirect @GLchar ByteBuffer strings); + + @Alternate("glCreateShaderProgramv") + @StripPostfix(value = "string", postfix = "v") + @GLuint + int glCreateShaderProgramv(@GLenum int type, @Constant("1") @GLsizei int count, @NullTerminated CharSequence string); + + @Alternate("glCreateShaderProgramv") + @StripPostfix(value = "strings", postfix = "v") + @GLuint + int glCreateShaderProgramv(@GLenum int type, @Constant("strings.length") @GLsizei int count, + @Const @NullTerminated @StringList(value = "count") CharSequence[] strings); + + void glBindProgramPipeline(@GLuint int pipeline); + + void glDeleteProgramPipelines(@AutoSize("pipelines") @GLsizei int n, @Const @GLuint IntBuffer pipelines); + + @Alternate("glDeleteProgramPipelines") + void glDeleteProgramPipelines(@Constant("1") @GLsizei int n, @Constant(value = "APIUtils.getBufferInt().put(0, pipeline), 0", keepParam = true) int pipeline); + + void glGenProgramPipelines(@AutoSize("pipelines") @GLsizei int n, @OutParameter @GLuint IntBuffer pipelines); + + @Alternate("glGenProgramPipelines") + @GLreturn("pipelines") + void glGenProgramPipelines2(@Constant("1") @GLsizei int n, @OutParameter @GLuint IntBuffer pipelines); + + boolean glIsProgramPipeline(@GLuint int pipeline); + + void glProgramParameteri(@GLuint int program, @GLenum int pname, int value); + + @StripPostfix("params") + void glGetProgramPipelineiv(@GLuint int pipeline, @GLenum int pname, @OutParameter @Check("1") IntBuffer params); + + @Alternate("glGetProgramPipelineiv") + @GLreturn("params") + @StripPostfix("params") + void glGetProgramPipelineiv2(@GLuint int pipeline, @GLenum int pname, @OutParameter IntBuffer params); + + void glProgramUniform1i(@GLuint int program, int location, int v0); + + void glProgramUniform2i(@GLuint int program, int location, int v0, int v1); + + void glProgramUniform3i(@GLuint int program, int location, int v0, int v1, int v2); + + void glProgramUniform4i(@GLuint int program, int location, int v0, int v1, int v2, int v3); + + void glProgramUniform1f(@GLuint int program, int location, float v0); + + void glProgramUniform2f(@GLuint int program, int location, float v0, float v1); + + void glProgramUniform3f(@GLuint int program, int location, float v0, float v1, float v2); + + void glProgramUniform4f(@GLuint int program, int location, float v0, float v1, float v2, float v3); + + void glProgramUniform1d(@GLuint int program, int location, double v0); + + void glProgramUniform2d(@GLuint int program, int location, double v0, double v1); + + void glProgramUniform3d(@GLuint int program, int location, double v0, double v1, double v2); + + void glProgramUniform4d(@GLuint int program, int location, double v0, double v1, double v2, double v3); + + @StripPostfix("value") + void glProgramUniform1iv(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const IntBuffer value); + + @StripPostfix("value") + void glProgramUniform2iv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const IntBuffer value); + + @StripPostfix("value") + void glProgramUniform3iv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const IntBuffer value); + + @StripPostfix("value") + void glProgramUniform4iv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const IntBuffer value); + + @StripPostfix("value") + void glProgramUniform1fv(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const FloatBuffer value); + + @StripPostfix("value") + void glProgramUniform2fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const FloatBuffer value); + + @StripPostfix("value") + void glProgramUniform3fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const FloatBuffer value); + + @StripPostfix("value") + void glProgramUniform4fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const FloatBuffer value); + + @StripPostfix("value") + void glProgramUniform1dv(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const DoubleBuffer value); + + @StripPostfix("value") + void glProgramUniform2dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const DoubleBuffer value); + + @StripPostfix("value") + void glProgramUniform3dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const DoubleBuffer value); + + @StripPostfix("value") + void glProgramUniform4dv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const DoubleBuffer value); + + void glProgramUniform1ui(@GLuint int program, int location, int v0); + + void glProgramUniform2ui(@GLuint int program, int location, int v0, int v1); + + void glProgramUniform3ui(@GLuint int program, int location, int v0, int v1, int v2); + + void glProgramUniform4ui(@GLuint int program, int location, int v0, int v1, int v2, int v3); + + @StripPostfix("value") + void glProgramUniform1uiv(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const IntBuffer value); + + @StripPostfix("value") + void glProgramUniform2uiv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const IntBuffer value); + + @StripPostfix("value") + void glProgramUniform3uiv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const IntBuffer value); + + @StripPostfix("value") + void glProgramUniform4uiv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const IntBuffer value); + + @StripPostfix("value") + void glProgramUniformMatrix2fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, boolean transpose, @Const FloatBuffer value); + + @StripPostfix("value") + void glProgramUniformMatrix3fv(@GLuint int program, int location, @AutoSize(value = "value", expression = " / (3 * 3)") @GLsizei int count, boolean transpose, @Const FloatBuffer value); + + @StripPostfix("value") + void glProgramUniformMatrix4fv(@GLuint int program, int location,... [truncated message content] |
From: <ka...@us...> - 2010-07-25 14:22:15
|
Revision: 3391 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3391&view=rev Author: kappa1 Date: 2010-07-25 14:22:09 +0000 (Sun, 25 Jul 2010) Log Message: ----------- AppletLoader: slight tweak to make code more readable Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-25 13:35:00 UTC (rev 3390) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-25 14:22:09 UTC (rev 3391) @@ -284,10 +284,10 @@ fgColor = getColor("boxfgcolor", Color.black); // load logos, if value is "" then skip - if (!getParameter("al_logo").equals("")) { + if (getParameter("al_logo").length() > 0) { logo = getImage(getParameter("al_logo")); } - if (!getParameter("al_progressbar").equals("")) { + if (getParameter("al_progressbar").length() > 0) { progressbar = getImage(getParameter("al_progressbar")); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-25 13:35:08
|
Revision: 3390 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3390&view=rev Author: kappa1 Date: 2010-07-25 13:35:00 +0000 (Sun, 25 Jul 2010) Log Message: ----------- AppletLoader: removed dead code. Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-25 13:31:49 UTC (rev 3389) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-25 13:35:00 UTC (rev 3390) @@ -463,11 +463,6 @@ int x = offscreen.getWidth(null)/2; int y = offscreen.getHeight(null)/2; - /*if(logo != null) { - x = (offscreen.getWidth(null) - logo.getWidth(null)) / 2; - y = (offscreen.getHeight(null) - logo.getHeight(null)) / 2; - }*/ - // draw logo if (logo != null) { og.drawImage(logoBuffer, x-logo.getWidth(null)/2, y-logo.getHeight(null)/2, this); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-25 13:31:57
|
Revision: 3389 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3389&view=rev Author: kappa1 Date: 2010-07-25 13:31:49 +0000 (Sun, 25 Jul 2010) Log Message: ----------- AppletLoader: addded ability to use appletloader with no images, just the logo, just the progressbar or both. To set no image for either image you must set the parameter value to "". Both images are now centred independently allowing variable size logo and progressbar images. Resized appletprogress.gif to match appletlogo.png size. Modified Paths: -------------- trunk/LWJGL/res/appletprogress.gif trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/res/appletprogress.gif =================================================================== (Binary files differ) Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-25 12:18:17 UTC (rev 3388) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-25 13:31:49 UTC (rev 3389) @@ -283,14 +283,13 @@ setBackground(bgColor); fgColor = getColor("boxfgcolor", Color.black); - // load logos - logo = getImage(getParameter("al_logo")); - progressbar = getImage(getParameter("al_progressbar")); - - //sanity check - if(logo == null || progressbar == null) { - fatalErrorOccured("Unable to load logo and progressbar images", null); + // load logos, if value is "" then skip + if (!getParameter("al_logo").equals("")) { + logo = getImage(getParameter("al_logo")); } + if (!getParameter("al_progressbar").equals("")) { + progressbar = getImage(getParameter("al_progressbar")); + } // check for lzma support try { @@ -460,22 +459,27 @@ painting = true; - // get logo position so its in the middle of applet - int x = 0, y = 0; + // get position at the middle of the offscreen buffer + int x = offscreen.getWidth(null)/2; + int y = offscreen.getHeight(null)/2; - if(logo != null) { + /*if(logo != null) { x = (offscreen.getWidth(null) - logo.getWidth(null)) / 2; y = (offscreen.getHeight(null) - logo.getHeight(null)) / 2; - } + }*/ // draw logo - if (logo != null) og.drawImage(logoBuffer, x, y, this); + if (logo != null) { + og.drawImage(logoBuffer, x-logo.getWidth(null)/2, y-logo.getHeight(null)/2, this); + } // draw message int messageX = (offscreen.getWidth(null) - fm.stringWidth(message)) / 2; int messageY = y + 20; - if (logo != null) messageY += logoBuffer.getHeight(null); + if (logo != null) messageY += logo.getHeight(null)/2; + else if (progressbar != null) messageY += progressbar.getHeight(null)/2; + og.drawString(message, messageX, messageY); // draw subtaskmessage, if any @@ -486,9 +490,9 @@ // draw loading bar, clipping it depending on percentage done if (progressbar != null) { - int barSize = (progressbarBuffer.getWidth(null) * percentage) / 100; - og.clipRect(0, 0, x + barSize, offscreen.getHeight(null)); - og.drawImage(progressbarBuffer, x, y, this); + int barSize = (progressbar.getWidth(null) * percentage) / 100; + og.clipRect(x-progressbar.getWidth(null)/2, 0, barSize, offscreen.getHeight(null)); + og.drawImage(progressbarBuffer, x-progressbar.getWidth(null)/2, y-progressbar.getHeight(null)/2, this); } painting = false; @@ -527,7 +531,10 @@ g.fillRect(0, 0, buffer.getWidth(null), buffer.getHeight(null)); // buffer background is cleared, so draw logo under progressbar - if (img == progressbar && logo != null) g.drawImage(logoBuffer, 0, 0, null); + if (img == progressbar && logo != null) { + g.drawImage(logoBuffer, progressbar.getWidth(null)/2-logo.getWidth(null)/2, + progressbar.getHeight(null)/2-logo.getHeight(null)/2, null); + } g.drawImage(img, 0, 0, this); g.dispose(); @@ -1453,6 +1460,9 @@ } catch (Exception e) { /* */ } + + // show error as image could not be loaded + fatalErrorOccured("Unable to load logo and progressbar images", null); return null; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-25 12:18:23
|
Revision: 3388 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3388&view=rev Author: kappa1 Date: 2010-07-25 12:18:17 +0000 (Sun, 25 Jul 2010) Log Message: ----------- AppletLoader: actually fail with error message if logo images are not found or an error occurs when they are loaded, added missing MediaTracker step. Also prevent paint thread from null pointer exception when this happens. Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-25 11:40:58 UTC (rev 3387) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-25 12:18:17 UTC (rev 3388) @@ -405,7 +405,6 @@ * @see java.awt.Container#paint(java.awt.Graphics) */ public void paint(Graphics g) { - // don't paint loader if applet loaded if(state == STATE_DONE) { return; @@ -416,16 +415,21 @@ offscreen = createImage(getWidth(), getHeight()); // create buffers for animated gifs - logoBuffer = createImage(logo.getWidth(null), logo.getHeight(null)); - progressbarBuffer = createImage(logo.getWidth(null), logo.getHeight(null)); + if (logo != null) { + logoBuffer = createImage(logo.getWidth(null), logo.getHeight(null)); + // add image observer, it will notify when next animated gif frame is ready + offscreen.getGraphics().drawImage(logo, 0, 0, this); + // in case image is not animated fill image buffer once + imageUpdate(logo, ImageObserver.FRAMEBITS, 0, 0, 0, 0); + } - // add image observer, it will notify when next animated gif frame is ready - offscreen.getGraphics().drawImage(logo, 0, 0, this); - offscreen.getGraphics().drawImage(progressbar, 0, 0, this); - - // in case image is not animated fill image buffers once - imageUpdate(logo, ImageObserver.FRAMEBITS, 0, 0, 0, 0); - imageUpdate(progressbar, ImageObserver.FRAMEBITS, 0, 0, 0, 0); + if (progressbar != null) { + progressbarBuffer = createImage(progressbar.getWidth(null), progressbar.getHeight(null)); + // add image observer, it will notify when next animated gif frame is ready + offscreen.getGraphics().drawImage(progressbar, 0, 0, this); + // in case image is not animated fill image buffer once + imageUpdate(progressbar, ImageObserver.FRAMEBITS, 0, 0, 0, 0); + } } // draw everything onto an image before drawing to avoid flicker @@ -436,14 +440,6 @@ og.setColor(bgColor); og.fillRect(0, 0, offscreen.getWidth(null), offscreen.getHeight(null)); - // get logo position so its in the middle of applet - int x = 0, y = 0; - - if(logo != null && !fatalError) { - x = (offscreen.getWidth(null) - logo.getWidth(null)) / 2; - y = (offscreen.getHeight(null) - logo.getHeight(null)) / 2; - } - og.setColor(fgColor); String message = getDescriptionForState(); @@ -464,12 +460,22 @@ painting = true; + // get logo position so its in the middle of applet + int x = 0, y = 0; + + if(logo != null) { + x = (offscreen.getWidth(null) - logo.getWidth(null)) / 2; + y = (offscreen.getHeight(null) - logo.getHeight(null)) / 2; + } + // draw logo - og.drawImage(logoBuffer, x, y, this); + if (logo != null) og.drawImage(logoBuffer, x, y, this); // draw message int messageX = (offscreen.getWidth(null) - fm.stringWidth(message)) / 2; - int messageY = y + logoBuffer.getHeight(null) + 20; + int messageY = y + 20; + if (logo != null) messageY += logoBuffer.getHeight(null); + og.drawString(message, messageX, messageY); // draw subtaskmessage, if any @@ -479,9 +485,11 @@ } // draw loading bar, clipping it depending on percentage done - int barSize = (progressbarBuffer.getWidth(null) * percentage) / 100; - og.clipRect(0, 0, x + barSize, offscreen.getHeight(null)); - og.drawImage(progressbarBuffer, x, y, this); + if (progressbar != null) { + int barSize = (progressbarBuffer.getWidth(null) * percentage) / 100; + og.clipRect(0, 0, x + barSize, offscreen.getHeight(null)); + og.drawImage(progressbarBuffer, x, y, this); + } painting = false; } @@ -519,7 +527,7 @@ g.fillRect(0, 0, buffer.getWidth(null), buffer.getHeight(null)); // buffer background is cleared, so draw logo under progressbar - if (img == progressbar) g.drawImage(logoBuffer, 0, 0, null); + if (img == progressbar && logo != null) g.drawImage(logoBuffer, 0, 0, null); g.drawImage(img, 0, 0, this); g.dispose(); @@ -1438,7 +1446,10 @@ tracker.addImage(image, 0); tracker.waitForAll(); - return image; + // if no errors return image + if (!tracker.isErrorAny()) { + return image; + } } catch (Exception e) { /* */ } @@ -1572,5 +1583,4 @@ } } - } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-25 11:41:05
|
Revision: 3387 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3387&view=rev Author: kappa1 Date: 2010-07-25 11:40:58 +0000 (Sun, 25 Jul 2010) Log Message: ----------- AppletLoader: fix error message so that it actually uses the error message string. Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-24 20:00:58 UTC (rev 3386) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-25 11:40:58 UTC (rev 3387) @@ -211,9 +211,6 @@ /** whether a fatal error occured */ protected boolean fatalError; - /** fatal error that occured */ - protected String fatalErrorDescription; - /** whether we're running in debug mode */ protected boolean debugMode; @@ -454,10 +451,6 @@ if (fatalError) { String[] errorMessage = (certificateRefused) ? certificateRefusedMessage : genericErrorMessage; - if (!certificateRefused) { - errorMessage[errorMessage.length-1] = fatalErrorDescription; - } - for(int i=0; i<errorMessage.length; i++) { if(errorMessage[i] != null) { int messageX = (offscreen.getWidth(null) - fm.stringWidth(errorMessage[i])) / 2; @@ -767,7 +760,7 @@ fatalErrorOccured(ace.getMessage(), ace); certificateRefused = true; } catch (Exception e) { - fatalErrorOccured(e.getMessage(), e); + fatalErrorOccured("This occurred while '" + getDescriptionForState() + "'", e); } finally { loaderThread = null; } @@ -1547,9 +1540,10 @@ */ protected void fatalErrorOccured(String error, Exception e) { fatalError = true; - fatalErrorDescription = "This occurred while '" + getDescriptionForState() + "'"; - System.out.println(fatalErrorDescription); + genericErrorMessage[genericErrorMessage.length-1] = error; + System.out.println(error); if(e != null) { + System.out.println(e.getMessage()); System.out.println(generateStacktrace(e)); } repaint(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-24 20:01:04
|
Revision: 3386 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3386&view=rev Author: kappa1 Date: 2010-07-24 20:00:58 +0000 (Sat, 24 Jul 2010) Log Message: ----------- AppletLoader: clean up resources (images) when switching to the LWJGL Applet as opposed to when applet is destroyed Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-21 18:53:41 UTC (rev 3385) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-24 20:00:58 UTC (rev 3386) @@ -368,12 +368,19 @@ if (lwjglApplet != null) { lwjglApplet.destroy(); } - + } + + /** + * Clean up resources + */ + protected void cleanUp() { progressbar = null; logo = null; logoBuffer = null; progressbarBuffer = null; + + offscreen = null; } /** @@ -501,6 +508,9 @@ */ public boolean imageUpdate(Image img, int flag, int x, int y, int width, int height) { + // finish with this ImageObserver + if (state == STATE_DONE) return false; + // if image frame is ready to be drawn and is currently not being painted if (flag == ImageObserver.FRAMEBITS && !painting) { Image buffer; @@ -750,7 +760,9 @@ // switch to LWJGL Applet switchApplet(); - state = STATE_DONE; + state = STATE_DONE; + // clean up resources + cleanUp(); } catch (AccessControlException ace) { fatalErrorOccured(ace.getMessage(), ace); certificateRefused = true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-21 18:53:50
|
Revision: 3385 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3385&view=rev Author: kappa1 Date: 2010-07-21 18:53:41 +0000 (Wed, 21 Jul 2010) Log Message: ----------- AppletLoader: fix bug with LWJGL 2.5 where appletloader crashed if the al_version parameter was used. Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-15 21:58:06 UTC (rev 3384) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-21 18:53:41 UTC (rev 3385) @@ -737,7 +737,7 @@ // save version information once jars downloaded successfully if (version != null) { percentage = 90; - writeVersionFile(dir, latestVersion); + writeVersionFile(versionFile, latestVersion); } // save file names with last modified info once downloaded successfully This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2010-07-15 21:58:15
|
Revision: 3384 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3384&view=rev Author: matzon Date: 2010-07-15 21:58:06 +0000 (Thu, 15 Jul 2010) Log Message: ----------- Elevate priv for jnlp and sign/trust Modified Paths: -------------- trunk/LWJGL/platform_build/build-webstart.xml Modified: trunk/LWJGL/platform_build/build-webstart.xml =================================================================== --- trunk/LWJGL/platform_build/build-webstart.xml 2010-07-15 20:00:41 UTC (rev 3383) +++ trunk/LWJGL/platform_build/build-webstart.xml 2010-07-15 21:58:06 UTC (rev 3384) @@ -54,15 +54,24 @@ <jar destfile="${lwjgl.temp}/jnlp/jinput.jar" update="true"> <manifest> <attribute name="Sealed" value="true"/> + <attribute name="Trusted-Library" value="true"/> </manifest> </jar> <jar destfile="${lwjgl.temp}/jnlp/lwjgl_util.jar" update="true"> <manifest> <attribute name="Sealed" value="true"/> + <attribute name="Trusted-Library" value="true"/> </manifest> - </jar> + </jar> + <jar destfile="${lwjgl.temp}/jnlp/lwjgl_test.jar" update="true"> + <manifest> + <attribute name="Sealed" value="true"/> + <attribute name="Trusted-Library" value="true"/> + </manifest> + </jar> + <!-- create native jars --> <jar destfile="${lwjgl.temp}/jnlp/native_windows.jar" basedir="${lwjgl.temp}/jnlp/temp/native/windows"> <manifest> @@ -92,17 +101,19 @@ <jar destfile="${lwjgl.temp}/jnlp/media.jar" basedir="${lwjgl.res}"> <manifest> <attribute name="Sealed" value="true"/> + <attribute name="Trusted-Library" value="true"/> </manifest> </jar> <!-- sign 'em --> <signjar jar="${lwjgl.temp}/jnlp/lwjgl.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> <signjar jar="${lwjgl.temp}/jnlp/lwjgl_util.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> + <signjar jar="${lwjgl.temp}/jnlp/jinput.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> + <signjar jar="${lwjgl.temp}/jnlp/lwjgl_test.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> + <signjar jar="${lwjgl.temp}/jnlp/media.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> <signjar jar="${lwjgl.temp}/jnlp/native_solaris.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> <signjar jar="${lwjgl.temp}/jnlp/native_linux.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> <signjar jar="${lwjgl.temp}/jnlp/native_macosx.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> <signjar jar="${lwjgl.temp}/jnlp/native_windows.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> - <signjar jar="${lwjgl.temp}/jnlp/jinput.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> - <signjar jar="${lwjgl.temp}/jnlp/media.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> </target> </project> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-15 20:00:47
|
Revision: 3383 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3383&view=rev Author: kappa1 Date: 2010-07-15 20:00:41 +0000 (Thu, 15 Jul 2010) Log Message: ----------- AppletLoader - slight tweak to make AppletLoader looks a bit better Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-15 19:43:11 UTC (rev 3382) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-15 20:00:41 UTC (rev 3383) @@ -1086,7 +1086,7 @@ // round to two decimal places downloadSpeed = ((int)(downloadSpeed*100))/100f; // set current speed message - downloadSpeedMessage = " @ " + downloadSpeed + " KB/sec"; + downloadSpeedMessage = " - " + downloadSpeed + " KB/sec"; // reset downloaded amount downloadedAmount = 0; // reset start time This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-15 19:43:17
|
Revision: 3382 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3382&view=rev Author: kappa1 Date: 2010-07-15 19:43:11 +0000 (Thu, 15 Jul 2010) Log Message: ----------- appletloader.html - edit html to reflect latest changes in the AppletLoader Modified Paths: -------------- trunk/LWJGL/applet/appletloader.html Modified: trunk/LWJGL/applet/appletloader.html =================================================================== --- trunk/LWJGL/applet/appletloader.html 2010-07-15 19:07:49 UTC (rev 3381) +++ trunk/LWJGL/applet/appletloader.html 2010-07-15 19:43:11 UTC (rev 3382) @@ -41,15 +41,15 @@ <!-- Version of Applet, important otherwise applet won't be cached, version change will update applet, must be int or float --> <!-- <param name="al_version" value="0.1"> --> + <!-- whether to use cache - defaults to true --> + <!-- <param name="al_cache" value="true"> --> + <!-- background color to paint with, defaults to white --> <!-- <param name="boxbgcolor" value="#000000"> --> <!-- foreground color to paint with, defaults to black --> <!-- <param name="boxfgcolor" value="#ffffff"> --> - <!-- error color to paint with, defaults to red --> - <!-- <param name="boxerrorcolor" value="#ff0000"> --> - <!-- whether to run in debug mode --> <!-- <param name="al_debug" value="true"> --> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2010-07-15 19:07:58
|
Revision: 3381 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3381&view=rev Author: matzon Date: 2010-07-15 19:07:49 +0000 (Thu, 15 Jul 2010) Log Message: ----------- Trusted-Library + Signing changes, blame kappaOne for breakage... Modified Paths: -------------- trunk/LWJGL/build.xml trunk/LWJGL/libs/lzma.jar trunk/LWJGL/platform_build/build-webstart.xml Modified: trunk/LWJGL/build.xml =================================================================== --- trunk/LWJGL/build.xml 2010-07-14 13:12:24 UTC (rev 3380) +++ trunk/LWJGL/build.xml 2010-07-15 19:07:49 UTC (rev 3381) @@ -124,7 +124,6 @@ <fileset refid="lwjgl.fileset" /> <manifest> <attribute name="Sealed" value="true"/> - <attribute name="Trusted-Library" value="true"/> </manifest> </jar> @@ -133,7 +132,6 @@ <fileset refid="lwjgl_util_applet.fileset" /> <manifest> <attribute name="Sealed" value="true"/> - <attribute name="Trusted-Library" value="true"/> </manifest> </jar> Modified: trunk/LWJGL/libs/lzma.jar =================================================================== (Binary files differ) Modified: trunk/LWJGL/platform_build/build-webstart.xml =================================================================== --- trunk/LWJGL/platform_build/build-webstart.xml 2010-07-14 13:12:24 UTC (rev 3380) +++ trunk/LWJGL/platform_build/build-webstart.xml 2010-07-15 19:07:49 UTC (rev 3381) @@ -44,17 +44,22 @@ </move> <!-- update Trusted-Library --> - <jar destfile="${lwjgl.temp}/jnlp/jinput.jar" update="true"> + <jar destfile="${lwjgl.temp}/jnlp/lwjgl.jar" update="true"> <manifest> <attribute name="Sealed" value="true"/> <attribute name="Trusted-Library" value="true"/> </manifest> </jar> + <jar destfile="${lwjgl.temp}/jnlp/jinput.jar" update="true"> + <manifest> + <attribute name="Sealed" value="true"/> + </manifest> + </jar> + <jar destfile="${lwjgl.temp}/jnlp/lwjgl_util.jar" update="true"> <manifest> <attribute name="Sealed" value="true"/> - <attribute name="Trusted-Library" value="true"/> </manifest> </jar> @@ -62,33 +67,33 @@ <jar destfile="${lwjgl.temp}/jnlp/native_windows.jar" basedir="${lwjgl.temp}/jnlp/temp/native/windows"> <manifest> <attribute name="Sealed" value="true"/> - <attribute name="Trusted-Library" value="true"/> </manifest> </jar> <jar destfile="${lwjgl.temp}/jnlp/native_linux.jar" basedir="${lwjgl.temp}/jnlp/temp/native/linux"> <manifest> <attribute name="Sealed" value="true"/> - <attribute name="Trusted-Library" value="true"/> </manifest> </jar> <jar destfile="${lwjgl.temp}/jnlp/native_macosx.jar" basedir="${lwjgl.temp}/jnlp/temp/native/macosx"> <manifest> <attribute name="Sealed" value="true"/> - <attribute name="Trusted-Library" value="true"/> </manifest> </jar> <jar destfile="${lwjgl.temp}/jnlp/native_solaris.jar" basedir="${lwjgl.temp}/jnlp/temp/native/solaris"> <manifest> <attribute name="Sealed" value="true"/> - <attribute name="Trusted-Library" value="true"/> </manifest> </jar> <!-- create media jar --> - <jar destfile="${lwjgl.temp}/jnlp/media.jar" basedir="${lwjgl.res}"/> + <jar destfile="${lwjgl.temp}/jnlp/media.jar" basedir="${lwjgl.res}"> + <manifest> + <attribute name="Sealed" value="true"/> + </manifest> + </jar> <!-- sign 'em --> <signjar jar="${lwjgl.temp}/jnlp/lwjgl.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> @@ -98,5 +103,6 @@ <signjar jar="${lwjgl.temp}/jnlp/native_macosx.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> <signjar jar="${lwjgl.temp}/jnlp/native_windows.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> <signjar jar="${lwjgl.temp}/jnlp/jinput.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> + <signjar jar="${lwjgl.temp}/jnlp/media.jar" alias="${alias}" keystore="${keystore}" storepass="${password}"/> </target> </project> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2010-07-14 13:12:34
|
Revision: 3380 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3380&view=rev Author: matzon Date: 2010-07-14 13:12:24 +0000 (Wed, 14 Jul 2010) Log Message: ----------- OAL patches by Ciardhubh Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/openal/ALC11.java trunk/LWJGL/src/java/org/lwjgl/test/openal/OpenALInfo.java trunk/LWJGL/src/native/common/org_lwjgl_openal_ALC10.c trunk/LWJGL/src/templates/org/lwjgl/openal/AL10.java Modified: trunk/LWJGL/src/java/org/lwjgl/openal/ALC11.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/openal/ALC11.java 2010-07-12 20:19:21 UTC (rev 3379) +++ trunk/LWJGL/src/java/org/lwjgl/openal/ALC11.java 2010-07-14 13:12:24 UTC (rev 3380) @@ -59,6 +59,9 @@ public static final int ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER = 0x311; public static final int ALC_CAPTURE_SAMPLES = 0x312; + public static final int ALC_MONO_SOURCES = 0x1010; + public static final int ALC_STEREO_SOURCES = 0x1011; + /** * The alcCaptureOpenDevice function allows the application to connect to a capture * device. To obtain a list of all available capture devices, use getCaptureDevices a list of all Modified: trunk/LWJGL/src/java/org/lwjgl/test/openal/OpenALInfo.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/test/openal/OpenALInfo.java 2010-07-12 20:19:21 UTC (rev 3379) +++ trunk/LWJGL/src/java/org/lwjgl/test/openal/OpenALInfo.java 2010-07-14 13:12:24 UTC (rev 3380) @@ -191,7 +191,7 @@ effects.put("Compressor", new Integer(EFX10.AL_EFFECT_COMPRESSOR)); effects.put("Equalizer", new Integer(EFX10.AL_EFFECT_EQUALIZER)); - entries = filters.entrySet(); + entries = effects.entrySet(); for(Iterator i = entries.iterator(); i.hasNext();) { Map.Entry entry = (Entry) i.next(); int value = ((Integer)entry.getValue()).intValue(); Modified: trunk/LWJGL/src/native/common/org_lwjgl_openal_ALC10.c =================================================================== --- trunk/LWJGL/src/native/common/org_lwjgl_openal_ALC10.c 2010-07-12 20:19:21 UTC (rev 3379) +++ trunk/LWJGL/src/native/common/org_lwjgl_openal_ALC10.c 2010-07-14 13:12:24 UTC (rev 3380) @@ -86,7 +86,7 @@ int length; int i=1; - if(alcString == NULL) { + if (alcString == NULL) { return NULL; } @@ -94,14 +94,21 @@ // These are encoded using \0 between elements and a finishing \0\0 switch(token) { case 0x1005: // ALC_DEVICE_SPECIFIER - case 0x310: // ALC_CAPTURE_DEVICE_SPECIFIER + case 0x310: // ALC_CAPTURE_DEVICE_SPECIFIER + // If deviceaddress is not 0, OpenAL returns a single device terminated by a + // single \0 character, if token is ALC_DEVICE_SPECIFIER or + // ALC_CAPTURE_DEVICE_SPECIFIER. + if (deviceaddress != 0) { + length = strlen(alcString); + break; + } case 0x1013: // ALC_ALL_DEVICES_SPECIFIER while (alcString[i - 1] != '\0' || alcString[i] != '\0') { i++; } length = i + 1; break; - default: + default: // e.g. ALC_DEFAULT_ALL_DEVICES_SPECIFIER length = strlen(alcString); } return NewStringNativeWithLength(env, alcString, length); Modified: trunk/LWJGL/src/templates/org/lwjgl/openal/AL10.java =================================================================== --- trunk/LWJGL/src/templates/org/lwjgl/openal/AL10.java 2010-07-12 20:19:21 UTC (rev 3379) +++ trunk/LWJGL/src/templates/org/lwjgl/openal/AL10.java 2010-07-14 13:12:24 UTC (rev 3380) @@ -250,35 +250,28 @@ int AL_FREQUENCY = 0x2001; /** - * Sound buffers: frequency, in units of Hertz [Hz]. - * This is the number of samples per second. Half of the - * sample frequency marks the maximum significant - * frequency component. + * Sound buffers: The number of bits per sample for the + * data contained in the buffer. */ int AL_BITS = 0x2002; /** - * Sound buffers: frequency, in units of Hertz [Hz]. - * This is the number of samples per second. Half of the - * sample frequency marks the maximum significant - * frequency component. + * Sound buffers: The number of channels for the data + * contained in the buffer. */ int AL_CHANNELS = 0x2003; /** - * Sound buffers: frequency, in units of Hertz [Hz]. - * This is the number of samples per second. Half of the - * sample frequency marks the maximum significant - * frequency component. + * Sound buffers: Size in bytes of the buffer data. */ int AL_SIZE = 0x2004; /** - * Sound buffers: frequency, in units of Hertz [Hz]. - * This is the number of samples per second. Half of the - * sample frequency marks the maximum significant - * frequency component. + * @deprecated This token is a relict of the early OpenAL days and is + * no longer supported. Neither the OpenAL spec nor OpenAL Soft define + * it. */ + @Deprecated int AL_DATA = 0x2005; /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-12 20:19:27
|
Revision: 3379 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3379&view=rev Author: kappa1 Date: 2010-07-12 20:19:21 +0000 (Mon, 12 Jul 2010) Log Message: ----------- AppletLoader: slightly more meaningful and friendly error message. Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-12 20:01:56 UTC (rev 3378) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-12 20:19:21 UTC (rev 3379) @@ -1535,7 +1535,7 @@ */ protected void fatalErrorOccured(String error, Exception e) { fatalError = true; - fatalErrorDescription = "Fatal error occured (" + state + "): " + error; + fatalErrorDescription = "This occurred while '" + getDescriptionForState() + "'"; System.out.println(fatalErrorDescription); if(e != null) { System.out.println(generateStacktrace(e)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-12 20:02:02
|
Revision: 3378 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3378&view=rev Author: kappa1 Date: 2010-07-12 20:01:56 +0000 (Mon, 12 Jul 2010) Log Message: ----------- AppletLoader: Remove the boxerrorcolor parameter, there is not much advantage in having different color error message font, its better to have a nice consistent error message then to try scare the user. Also simplifies the AppletLoader api by reducing the number of parameters. Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-12 12:04:56 UTC (rev 3377) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-12 20:01:56 UTC (rev 3378) @@ -110,7 +110,7 @@ * <ul> * <li>al_version - [int or float] Version of deployment. If this is specified, the jars will be cached and * reused if the version matches. If version doesn't match all of the files are reloaded.</li> - * <li>al_cache - [boolean] Whether to use cache system. If al_version is used then cache is not used. <i>Default: true</i>.</li> + * <li>al_cache - [boolean] Whether to use cache system. <i>Default: true</i>.</li> * <li>al_debug - [boolean] Whether to enable debug mode. <i>Default: false</i>.</li> * <li>al_prepend_host - [boolean] Whether to limit caching to this domain, disable if your applet is hosted on multple domains and needs to share the cache. <i>Default: true</i>.</li> * <ul> @@ -121,7 +121,6 @@ * <ul> * <li>boxbgcolor - [String] any String AWT color ("red", "blue", etc), RGB (0-255) or hex formated color (#RRGGBB) to use as background. <i>Default: #ffffff</i>.</li> * <li>boxfgcolor - [String] any String AWT color ("red", "blue", etc), RGB (0-255) or hex formated color (#RRGGBB) to use as foreground. <i>Default: #000000</i>.</li> - * <li>boxerrorcolor - [String] any String AWT color ("red", "blue", etc), RGB (0-255) or hex formated color (#RRGGBB) to use as foreground color on error. <i>Default: #ff0000</i>.</li> * </ul> * </p> * @author kappaOne @@ -190,9 +189,6 @@ /** background color of applet */ protected Color bgColor = Color.white; - - /** Color to write errors in */ - protected Color errorColor = Color.red; /** color to write foreground in */ protected Color fgColor = Color.black; @@ -288,10 +284,8 @@ // get colors of applet bgColor = getColor("boxbgcolor", Color.white); setBackground(bgColor); + fgColor = getColor("boxfgcolor", Color.black); - fgColor = getColor("boxfgcolor", Color.black); - errorColor = getColor("boxerrorcolor", Color.red); - // load logos logo = getImage(getParameter("al_logo")); progressbar = getImage(getParameter("al_progressbar")); @@ -462,7 +456,6 @@ int messageX = (offscreen.getWidth(null) - fm.stringWidth(errorMessage[i])) / 2; int messageY = (offscreen.getHeight(null) - (fm.getHeight() * errorMessage.length)) / 2; - og.setColor(errorColor); og.drawString(errorMessage[i], messageX, messageY + i*fm.getHeight()); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ma...@us...> - 2010-07-12 12:05:02
|
Revision: 3377 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3377&view=rev Author: matzon Date: 2010-07-12 12:04:56 +0000 (Mon, 12 Jul 2010) Log Message: ----------- fixed issue with single-line if Modified Paths: -------------- trunk/LWJGL/src/native/windows/context.c Modified: trunk/LWJGL/src/native/windows/context.c =================================================================== --- trunk/LWJGL/src/native/windows/context.c 2010-07-11 20:25:24 UTC (rev 3376) +++ trunk/LWJGL/src/native/windows/context.c 2010-07-12 12:04:56 UTC (rev 3377) @@ -221,8 +221,9 @@ if (pbuffer) { putAttrib(&attrib_list, WGL_DRAW_TO_PBUFFER_ARB); putAttrib(&attrib_list, TRUE); } - if (!getBooleanProperty(env, "org.lwjgl.opengl.Display.allowSoftwareOpenGL")) + if (!getBooleanProperty(env, "org.lwjgl.opengl.Display.allowSoftwareOpenGL")) { putAttrib(&attrib_list, WGL_ACCELERATION_ARB); putAttrib(&attrib_list, WGL_FULL_ACCELERATION_ARB); + } putAttrib(&attrib_list, WGL_PIXEL_TYPE_ARB); putAttrib(&attrib_list, pixel_type); putAttrib(&attrib_list, WGL_DOUBLE_BUFFER_ARB); putAttrib(&attrib_list, double_buffer ? TRUE : FALSE); putAttrib(&attrib_list, WGL_SUPPORT_OPENGL_ARB); putAttrib(&attrib_list, TRUE); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-11 20:25:30
|
Revision: 3376 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3376&view=rev Author: kappa1 Date: 2010-07-11 20:25:24 +0000 (Sun, 11 Jul 2010) Log Message: ----------- fix: Keyboard focus handling broken when using Display.setParent() applets on Ubunutu (strangly worked on OpenSuse), hopefully should be fixed now. Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2010-07-11 15:26:33 UTC (rev 3375) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2010-07-11 20:25:24 UTC (rev 3376) @@ -880,12 +880,12 @@ setInputFocusUnsafe(current_window); } else if (xembedded) { - setInputFocusUnsafe(0); + setInputFocusUnsafe(1); } } - else if (parent_focus && !focused) { - setInputFocusUnsafe(current_window); - } + //else if (parent_focus && !focused && !xembedded) { + // setInputFocusUnsafe(current_window); + //} } private void setFocused(boolean got_focus, int focus_detail) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-11 15:26:39
|
Revision: 3375 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3375&view=rev Author: kappa1 Date: 2010-07-11 15:26:33 +0000 (Sun, 11 Jul 2010) Log Message: ----------- AppletLoader: fix issue with caching and lzma/pack200 files Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-11 13:54:52 UTC (rev 3374) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-11 15:26:33 UTC (rev 3375) @@ -1251,6 +1251,10 @@ float increment = (float) 10.0 / urlList.length; // extract all lzma and pack.lzma files for (int i = 0; i < urlList.length; i++) { + + // if file has not changed, skip it + if (fileSizes[i] == -2) continue; + percentage = 55 + (int) (increment * (i+1)); String filename = getFileName(urlList[i]); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-11 13:54:58
|
Revision: 3374 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3374&view=rev Author: kappa1 Date: 2010-07-11 13:54:52 +0000 (Sun, 11 Jul 2010) Log Message: ----------- Appletloader: fix caching issue with native jars Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-11 13:03:16 UTC (rev 3373) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-11 13:54:52 UTC (rev 3374) @@ -544,7 +544,7 @@ case STATE_DETERMINING_PACKAGES: return "Determining packages to load"; case STATE_CHECKING_CACHE: - return "Calculate download size and check cache"; + return "Calculating download size"; case STATE_DOWNLOADING: return "Downloading packages"; case STATE_EXTRACTING_PACKAGES: @@ -1286,6 +1286,11 @@ */ protected void extractNatives(String path) throws Exception { + // if no new native jar was downloaded, no extracting needed + if (fileSizes[fileSizes.length-1] == -2) { + return; + } + state = STATE_EXTRACTING_PACKAGES; int initialPercentage = percentage; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-11 13:03:22
|
Revision: 3373 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3373&view=rev Author: kappa1 Date: 2010-07-11 13:03:16 +0000 (Sun, 11 Jul 2010) Log Message: ----------- AppletLoader: fix code to compile on java 1.4 Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-11 12:13:34 UTC (rev 3372) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-11 13:03:16 UTC (rev 3373) @@ -1006,7 +1006,7 @@ if (cacheEnabled && lastModified != 0 && filesLastModified.containsKey(fileName)) { - long savedLastModified = (Long)filesLastModified.get(fileName); + long savedLastModified = ((Long)filesLastModified.get(fileName)).longValue(); // if lastModifed time is the same, don't redownload if (savedLastModified == lastModified) { @@ -1019,7 +1019,7 @@ } // put key and value in the hashmap - filesLastModified.put(fileName, lastModified); + filesLastModified.put(fileName, new Long(lastModified)); // update progress bar percentage = 5 + (int)(10 * i/(float)urlList.length); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-11 12:16:50
|
Revision: 3372 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3372&view=rev Author: kappa1 Date: 2010-07-11 12:13:34 +0000 (Sun, 11 Jul 2010) Log Message: ----------- Appletloader: Initial implementation of a proper caching system. Files will only be downloaded if lastModified time is different from when files were downloaded previously. al_cache parameter is used to disable and enable this caching (default: true). This caching will not be used if al_version parameter is used. Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-10 11:56:55 UTC (rev 3371) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-11 12:13:34 UTC (rev 3372) @@ -48,6 +48,8 @@ import java.io.FilePermission; import java.io.IOException; import java.io.InputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.io.StringWriter; @@ -69,6 +71,7 @@ import java.security.SecureClassLoader; import java.security.cert.Certificate; import java.util.Enumeration; +import java.util.HashMap; import java.util.StringTokenizer; import java.util.Vector; import java.util.jar.JarEntry; @@ -107,6 +110,7 @@ * <ul> * <li>al_version - [int or float] Version of deployment. If this is specified, the jars will be cached and * reused if the version matches. If version doesn't match all of the files are reloaded.</li> + * <li>al_cache - [boolean] Whether to use cache system. If al_version is used then cache is not used. <i>Default: true</i>.</li> * <li>al_debug - [boolean] Whether to enable debug mode. <i>Default: false</i>.</li> * <li>al_prepend_host - [boolean] Whether to limit caching to this domain, disable if your applet is hosted on multple domains and needs to share the cache. <i>Default: true</i>.</li> * <ul> @@ -220,6 +224,15 @@ /** whether to prepend host to cache path */ protected boolean prependHost; + /** Used to store file names with lastModified time */ + protected HashMap filesLastModified; + + /** Sizes of files to download */ + protected int[] fileSizes; + + /** whether to use caching system, only download files that have changed */ + protected boolean cacheEnabled; + /** String to display as a subtask */ protected String subtaskMessage = ""; @@ -262,7 +275,10 @@ return; } } - + + // whether to use cache system + cacheEnabled = getBooleanParameter("al_cache", true); + // whether to run in debug mode debugMode = getBooleanParameter("al_debug", false); @@ -479,7 +495,7 @@ og.dispose(); - // finally draw it all + // finally draw it all centred g.drawImage(offscreen, (getWidth() - offscreen.getWidth(null))/2, (getHeight() - offscreen.getHeight(null))/2, null); } @@ -528,7 +544,7 @@ case STATE_DETERMINING_PACKAGES: return "Determining packages to load"; case STATE_CHECKING_CACHE: - return "Checking cache for existing files"; + return "Calculate download size and check cache"; case STATE_DOWNLOADING: return "Downloading packages"; case STATE_EXTRACTING_PACKAGES: @@ -681,11 +697,12 @@ if (!dir.exists()) { dir.mkdirs(); } - dir = new File(dir, "version"); + + File versionFile = new File(dir, "version"); + + // if specified applet version already available don't download anything + boolean versionAvailable = false; - // if applet already available don't download anything - boolean cacheAvailable = false; - // version of applet String version = getParameter("al_version"); float latestVersion = 0; @@ -696,10 +713,10 @@ latestVersion = Float.parseFloat(version); // if version file exists - if (dir.exists()) { + if (versionFile.exists()) { // compare to new version - if (latestVersion <= readVersionFile(dir)) { - cacheAvailable = true; + if (latestVersion <= readVersionFile(versionFile)) { + versionAvailable = true; percentage = 90; if(debugMode) { @@ -711,9 +728,12 @@ } // if jars not available or need updating download them - if (!cacheAvailable) { + if (!versionAvailable) { + // get jars file sizes and check cache + getJarInfo(dir); // 5-15% + // downloads jars from the server - downloadJars(path); // 10-55% + downloadJars(path); // 15-55% // Extract Pack and LZMA files extractJars(path); // 55-65% @@ -721,11 +741,14 @@ // Extracts Native Files extractNatives(path); // 65-85% - // add version information once jars downloaded successfully + // save version information once jars downloaded successfully if (version != null) { percentage = 90; writeVersionFile(dir, latestVersion); } + + // save file names with last modified info once downloaded successfully + writeCacheFile(new File(dir, "cache"), filesLastModified); } // add the downloaded jars and natives to classpath @@ -771,8 +794,35 @@ dos.writeFloat(version); dos.close(); } + + /** + * read the current cache file + * + * @param file the file to read + * @return the hashmap containing the files names and lastModified times + * @throws Exception if it fails to read hashmap + */ + protected HashMap readCacheFile(File file) throws Exception { + ObjectInputStream dis = new ObjectInputStream(new FileInputStream(file)); + HashMap hashMap = (HashMap)dis.readObject(); + dis.close(); + return hashMap; + } /** + * write out cache file of applet + * + * @param file the file to write out to + * @param filesLastModified the hashmap containing files names and lastModified times + * @throws Exception if it fails to write file + */ + protected void writeCacheFile(File file, HashMap filesLastModified) throws Exception { + ObjectOutputStream dos = new ObjectOutputStream(new FileOutputStream(file)); + dos.writeObject(filesLastModified); + dos.close(); + } + + /** * Edits the ClassPath at runtime to include the jars * that have just been downloaded and then adds the * lwjgl natives folder property. @@ -848,7 +898,7 @@ * Due to the way applets on plugin1 work, one jvm must * be used for all applets. We need to use multiple * classloaders in the same jvm due to LWJGL's static - * nature. I order to solver this we simply remove the + * nature. I order to solve this we simply remove the * natives from a previous classloader allowing a new * classloader to use those natives in the same jvm. * @@ -913,23 +963,33 @@ state = STATE_START_REAL_APPLET; lwjglApplet.start(); } - + /** - * Will download the jars from the server using the list of urls - * in urlList, while at the same time updating progress bar + * This method will get the files sizes of the files to download. + * It wil further get the lastModified time of files + * and save it in a hashmap, if cache is enabled it will mark + * those files that have not changed since last download to not + * redownloaded. * - * @param path location of the directory to save to - * @throws Exception if download fails + * @param dir - location to read cache file from + * @throws Exception - if fails to get infomation */ - protected void downloadJars(String path) throws Exception { + protected void getJarInfo(File dir) throws Exception { - state = STATE_DOWNLOADING; - + filesLastModified = new HashMap(); + + // store file sizes and mark which files not to download + fileSizes = new int[urlList.length]; + URLConnection urlconnection; - // store file sizes, used for download verification - int[] fileSizes = new int[urlList.length]; + File cacheFile = new File(dir, "cache"); + // if cache file exists, load it + if (cacheFile.exists()) { + filesLastModified = readCacheFile(cacheFile); + } + // calculate total size of jars to download for (int i = 0; i < urlList.length; i++) { urlconnection = urlList[i].openConnection(); @@ -937,16 +997,57 @@ if (urlconnection instanceof HttpURLConnection) { ((HttpURLConnection) urlconnection).setRequestMethod("HEAD"); } + fileSizes[i] = urlconnection.getContentLength(); - totalSizeDownload += fileSizes[i]; + + long lastModified = urlconnection.getLastModified(); + String fileName = getFileName(urlList[i]); + + + if (cacheEnabled && lastModified != 0 && + filesLastModified.containsKey(fileName)) { + long savedLastModified = (Long)filesLastModified.get(fileName); + + // if lastModifed time is the same, don't redownload + if (savedLastModified == lastModified) { + fileSizes[i] = -2; // mark it to not redownload + } + } + + if (fileSizes[i] >= 0) { + totalSizeDownload += fileSizes[i]; + } + + // put key and value in the hashmap + filesLastModified.put(fileName, lastModified); + + // update progress bar + percentage = 5 + (int)(10 * i/(float)urlList.length); } + } + + /** + * Will download the jars from the server using the list of urls + * in urlList, while at the same time updating progress bar + * + * @param path location of the directory to save to + * @throws Exception if download fails + */ + protected void downloadJars(String path) throws Exception { - int initialPercentage = percentage = 10; + state = STATE_DOWNLOADING; + URLConnection urlconnection; + + int initialPercentage = percentage = 15; + // download each jar byte buffer[] = new byte[65536]; for (int i = 0; i < urlList.length; i++) { + // skip file if marked as -2 (already downloaded and not changed) + if (fileSizes[i] == -2) continue; + int unsuccessfulAttempts = 0; int maxUnsuccessfulAttempts = 3; boolean downloadFile = true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-10 11:57:01
|
Revision: 3371 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3371&view=rev Author: kappa1 Date: 2010-07-10 11:56:55 +0000 (Sat, 10 Jul 2010) Log Message: ----------- AppletLoader: fixed flicker on animated gifs using ImageObserver. When image is ready to be drawn it is copied into a buffer image ready to be drawn. Also now supports variable time animated gifs and not limited to drawing only every 100ms. Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java Modified: trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-09 21:46:27 UTC (rev 3370) +++ trunk/LWJGL/src/java/org/lwjgl/util/applet/AppletLoader.java 2010-07-10 11:56:55 UTC (rev 3371) @@ -39,6 +39,7 @@ import java.awt.Graphics; import java.awt.Image; import java.awt.MediaTracker; +import java.awt.image.ImageObserver; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; @@ -172,14 +173,17 @@ protected int totalSizeExtract; /** logo to be shown while loading */ - protected Image logo; + protected Image logo, logoBuffer; /** progressbar to render while loading */ - protected Image progressbar; + protected Image progressbar, progressbarBuffer; /** offscreen image used */ protected Image offscreen; + /** set to true while painting is done */ + protected boolean painting; + /** background color of applet */ protected Color bgColor = Color.white; @@ -357,6 +361,9 @@ progressbar = null; logo = null; + + logoBuffer = null; + progressbarBuffer = null; } /** @@ -393,6 +400,18 @@ // create offscreen if missing if (offscreen == null) { offscreen = createImage(getWidth(), getHeight()); + + // create buffers for animated gifs + logoBuffer = createImage(logo.getWidth(null), logo.getHeight(null)); + progressbarBuffer = createImage(logo.getWidth(null), logo.getHeight(null)); + + // add image observer, it will notify when next animated gif frame is ready + offscreen.getGraphics().drawImage(logo, 0, 0, this); + offscreen.getGraphics().drawImage(progressbar, 0, 0, this); + + // in case image is not animated fill image buffers once + imageUpdate(logo, ImageObserver.FRAMEBITS, 0, 0, 0, 0); + imageUpdate(progressbar, ImageObserver.FRAMEBITS, 0, 0, 0, 0); } // draw everything onto an image before drawing to avoid flicker @@ -407,8 +426,8 @@ int x = 0, y = 0; if(logo != null && !fatalError) { - x = (offscreen.getWidth(null) - logo.getWidth(this)) / 2; - y = (offscreen.getHeight(null) - logo.getHeight(this)) / 2; + x = (offscreen.getWidth(null) - logo.getWidth(null)) / 2; + y = (offscreen.getHeight(null) - logo.getHeight(null)) / 2; } og.setColor(fgColor); @@ -433,13 +452,15 @@ } } else { og.setColor(fgColor); - + + painting = true; + // draw logo - og.drawImage(logo, x, y, null); + og.drawImage(logoBuffer, x, y, this); // draw message int messageX = (offscreen.getWidth(null) - fm.stringWidth(message)) / 2; - int messageY = y + logo.getHeight(null) + 20; + int messageY = y + logoBuffer.getHeight(null) + 20; og.drawString(message, messageX, messageY); // draw subtaskmessage, if any @@ -449,16 +470,53 @@ } // draw loading bar, clipping it depending on percentage done - int barSize = (progressbar.getWidth(this) * percentage) / 100; + int barSize = (progressbarBuffer.getWidth(null) * percentage) / 100; og.clipRect(0, 0, x + barSize, offscreen.getHeight(null)); - og.drawImage(progressbar, x, y, null); + og.drawImage(progressbarBuffer, x, y, this); + + painting = false; } og.dispose(); - - // finally draw it all centred + + // finally draw it all g.drawImage(offscreen, (getWidth() - offscreen.getWidth(null))/2, (getHeight() - offscreen.getHeight(null))/2, null); } + + /** + * When an animated gif frame is ready to be drawn the ImageObserver + * will call this method. + * + * The Image frame is copied into a buffer, which is then drawn. + * This is done to prevent image tearing on gif animations. + */ + public boolean imageUpdate(Image img, int flag, int x, int y, int width, int height) { + + // if image frame is ready to be drawn and is currently not being painted + if (flag == ImageObserver.FRAMEBITS && !painting) { + Image buffer; + + // select which buffer to fill + if (img == logo) buffer = logoBuffer; + else buffer = progressbarBuffer; + + Graphics g = buffer.getGraphics(); + + // clear background on buffer + g.setColor(bgColor); + g.fillRect(0, 0, buffer.getWidth(null), buffer.getHeight(null)); + + // buffer background is cleared, so draw logo under progressbar + if (img == progressbar) g.drawImage(logoBuffer, 0, 0, null); + + g.drawImage(img, 0, 0, this); + g.dispose(); + + repaint(); + } + + return true; + } /** * @return string describing the state of the loader This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sp...@us...> - 2010-07-09 21:46:33
|
Revision: 3370 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3370&view=rev Author: spasi Date: 2010-07-09 21:46:27 +0000 (Fri, 09 Jul 2010) Log Message: ----------- Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2010-07-09 19:37:14 UTC (rev 3369) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/LinuxDisplay.java 2010-07-09 21:46:27 UTC (rev 3370) @@ -1344,12 +1344,14 @@ }) == null ) throw new LWJGLException("Failed to apply Compiz LFS workaround."); - try { - // gconftool will not apply the workaround immediately, sleep a bit - // to make sure it will be ok when we create the window. - Thread.sleep(200); // 100 is too low, 150 works, set to 200 to be safe. - } catch (InterruptedException e) { - e.printStackTrace(); + if ( state ) { + try { + // gconftool will not apply the workaround immediately, sleep a bit + // to make sure it will be ok when we create the window. + Thread.sleep(200); // 100 is too low, 150 works, set to 200 to be safe. + } catch (InterruptedException e) { + e.printStackTrace(); + } } } }; @@ -1358,7 +1360,7 @@ } } - if ( provider != null && !provider.hasLegacyFullscreenSupport() ) { // No need to do anything is LFS is already enabled. + if ( provider != null && !provider.hasLegacyFullscreenSupport() ) { // No need to do anything if LFS is already enabled. applyFix = true; LWJGLUtil.log("Using " + providerName + " to apply Compiz LFS workaround."); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ka...@us...> - 2010-07-09 19:37:21
|
Revision: 3369 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3369&view=rev Author: kappa1 Date: 2010-07-09 19:37:14 +0000 (Fri, 09 Jul 2010) Log Message: ----------- Display sync modified to allow it to be interrupted. Thanks to bobjob for this, further thanks to MatthiasM for pointing out that the interrupt should not be swallowed. Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/Display.java Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/Display.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/Display.java 2010-07-09 18:44:31 UTC (rev 3368) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/Display.java 2010-07-09 19:37:14 UTC (rev 3369) @@ -424,12 +424,13 @@ savedTimeLate = timeLate; } - while ( gapTo > timeNow + savedTimeLate ) { - try { + try { + while ( gapTo > timeNow + savedTimeLate ) { Thread.sleep(1); - } catch (InterruptedException e) { + timeNow = Sys.getTime(); } - timeNow = Sys.getTime(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); } synchronized ( GlobalLock.lock ) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |