From fc845268e68e48ec4c6a61c80a691f48d41ce1ec Mon Sep 17 00:00:00 2001 From: Brian Matzon Date: Sat, 19 May 2007 20:47:53 +0000 Subject: [PATCH] remove context from the devices list of context on context destroy --- src/java/org/lwjgl/openal/ALC10.java | 2 ++ src/java/org/lwjgl/openal/ALCdevice.java | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/java/org/lwjgl/openal/ALC10.java b/src/java/org/lwjgl/openal/ALC10.java index 7e289c7b..9264ede0 100644 --- a/src/java/org/lwjgl/openal/ALC10.java +++ b/src/java/org/lwjgl/openal/ALC10.java @@ -359,6 +359,8 @@ public final class ALC10 { synchronized(ALC10.contexts) { nalcDestroyContext(getContext(context)); context.setInvalid(); + ALCdevice device = alcGetContextsDevice(context); + device.removeContext(context); } } native static void nalcDestroyContext(long context); diff --git a/src/java/org/lwjgl/openal/ALCdevice.java b/src/java/org/lwjgl/openal/ALCdevice.java index de348f57..5e4540d6 100644 --- a/src/java/org/lwjgl/openal/ALCdevice.java +++ b/src/java/org/lwjgl/openal/ALCdevice.java @@ -89,6 +89,17 @@ public final class ALCdevice { contexts.put(new Long(context.context), context); } } + + /** + * Remove context associated with device + * + * @param context Context to disassociate with device + */ + void removeContext(ALCcontext context) { + synchronized (contexts) { + contexts.remove(new Long(context.context)); + } + } /** * Marks this device and all of its contexts invalid