From 20537ab57e76541ab408ae395f12f745b3f66e1e Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sat, 24 Jul 2004 16:29:15 +0000 Subject: [PATCH] Use WeakHashMap in the static mapping from contexts to vbo trackers in VBOTracker.java. --- src/java/org/lwjgl/opengl/GLContext.java | 2 +- src/java/org/lwjgl/opengl/Pbuffer.java | 1 - src/java/org/lwjgl/opengl/VBOTracker.java | 15 ++------------- 3 files changed, 3 insertions(+), 15 deletions(-) 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; - } - } }