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