diff --git a/src/java/org/lwjgl/opengl/GLContext.java b/src/java/org/lwjgl/opengl/GLContext.java index 990498ca..fa37bde8 100644 --- a/src/java/org/lwjgl/opengl/GLContext.java +++ b/src/java/org/lwjgl/opengl/GLContext.java @@ -252,7 +252,7 @@ public final class GLContext { GL11.initNativeStubs(); loadStubs(); currentContext = new WeakReference(context); - VBOTracker.setCurrent(currentContext); + VBOTracker.setCurrent(context); } catch (LWJGLException e) { if (did_auto_load) unloadOpenGLLibrary(); diff --git a/src/java/org/lwjgl/opengl/Pbuffer.java b/src/java/org/lwjgl/opengl/Pbuffer.java index c88d2c2e..d042d827 100644 --- a/src/java/org/lwjgl/opengl/Pbuffer.java +++ b/src/java/org/lwjgl/opengl/Pbuffer.java @@ -244,7 +244,6 @@ public final class Pbuffer { * the current rendering context or not. */ public synchronized void destroy() { - VBOTracker.remove(this); try { makeCurrent(); int error = GL11.glGetError(); diff --git a/src/java/org/lwjgl/opengl/VBOTracker.java b/src/java/org/lwjgl/opengl/VBOTracker.java index 5b78eb45..d114ffd2 100644 --- a/src/java/org/lwjgl/opengl/VBOTracker.java +++ b/src/java/org/lwjgl/opengl/VBOTracker.java @@ -31,7 +31,7 @@ */ package org.lwjgl.opengl; -import java.util.HashMap; +import java.util.WeakHashMap; import java.util.Map; /** @@ -40,7 +40,7 @@ import java.util.Map; class VBOTracker { private static VBOTracker current_tracker = null; - private static final Map contextToTracker = new HashMap(3, 1.0f); + private static final Map contextToTracker = new WeakHashMap(3, 1.0f); private final StateStack vbo_array_stack; private final StateStack vbo_element_stack; @@ -77,15 +77,4 @@ class VBOTracker { contextToTracker.put(context, current_tracker); } } - - /** - * Remove a context when it is about to be destroyed. - * @param context - */ - static synchronized void remove(Object context) { - contextToTracker.remove(context); - if (current_tracker == context) { - current_tracker = null; - } - } }