From: <sp...@us...> - 2011-11-10 18:46:50
|
Revision: 3690 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3690&view=rev Author: spasi Date: 2011-11-10 18:46:43 +0000 (Thu, 10 Nov 2011) Log Message: ----------- Changed CallbackUtil to use ContextCapabilities instead of ContextGL. Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/CallbackUtil.java trunk/LWJGL/src/java/org/lwjgl/opengl/Context.java trunk/LWJGL/src/java/org/lwjgl/opengl/GLContext.java Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/CallbackUtil.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/CallbackUtil.java 2011-10-30 14:44:52 UTC (rev 3689) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/CallbackUtil.java 2011-11-10 18:46:43 UTC (rev 3690) @@ -42,9 +42,9 @@ final class CallbackUtil { /** Context -> Long */ - private static final Map<ContextGL, Long> contextUserParamsARB = new HashMap<ContextGL, Long>(); + private static final Map<ContextCapabilities, Long> contextUserParamsARB = new HashMap<ContextCapabilities, Long>(); /** Context -> Long */ - private static final Map<ContextGL, Long> contextUserParamsAMD = new HashMap<ContextGL, Long>(); + private static final Map<ContextCapabilities, Long> contextUserParamsAMD = new HashMap<ContextCapabilities, Long>(); private CallbackUtil() {} @@ -84,19 +84,19 @@ * * @param userParam the global reference pointer */ - private static void registerContextCallback(final long userParam, final Map<ContextGL, Long> contextUserData) { - ContextGL context = ContextGL.getCurrentContext(); - if ( context == null ) { + private static void registerContextCallback(final long userParam, final Map<ContextCapabilities, Long> contextUserData) { + ContextCapabilities caps = GLContext.getCapabilities(); + if ( caps == null ) { deleteGlobalRef(userParam); throw new IllegalStateException("No context is current."); } - final Long userParam_old = contextUserData.remove(context); + final Long userParam_old = contextUserData.remove(caps); if ( userParam_old != null ) deleteGlobalRef(userParam_old); if ( userParam != 0 ) - contextUserData.put(context, userParam); + contextUserData.put(caps, userParam); } /** @@ -104,12 +104,15 @@ * * @param context the Context to unregister */ - static void unregisterCallbacks(final ContextGL context) { - Long userParam = contextUserParamsARB.remove(context); + static void unregisterCallbacks(final Object context) { + // TODO: This is never called for custom contexts. Need to fix for LWJGL 3.0 + final ContextCapabilities caps = GLContext.getCapabilities(context); + + Long userParam = contextUserParamsARB.remove(caps); if ( userParam != null ) deleteGlobalRef(userParam); - userParam = contextUserParamsAMD.remove(context); + userParam = contextUserParamsAMD.remove(caps); if ( userParam != null ) deleteGlobalRef(userParam); } Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/Context.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/Context.java 2011-10-30 14:44:52 UTC (rev 3689) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/Context.java 2011-11-10 18:46:43 UTC (rev 3690) @@ -32,7 +32,6 @@ package org.lwjgl.opengl; import org.lwjgl.LWJGLException; -import org.lwjgl.opengles.PowerManagementEventException; /** * @author Spasi Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/GLContext.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/GLContext.java 2011-10-30 14:44:52 UTC (rev 3689) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/GLContext.java 2011-11-10 18:46:43 UTC (rev 3690) @@ -130,6 +130,17 @@ return getThreadLocalCapabilities(); } + /** + * Returns the capabilities instance associated with the specified context object. + * + * @param context the context object + * + * @return the capabilities instance + */ + static ContextCapabilities getCapabilities(Object context) { + return capability_cache.get(context); + } + private static ContextCapabilities getThreadLocalCapabilities() { return current_capabilities.get(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |