From d668c91b9bf074dca8935872e3a952a4176b09f2 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Fri, 5 Aug 2005 20:26:01 +0000 Subject: [PATCH] Use the new LRUHashMap removal observer mechanism. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3672 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- src/java/com/threerings/openal/ClipBuffer.java | 8 ++++---- src/java/com/threerings/openal/SoundManager.java | 7 +++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/java/com/threerings/openal/ClipBuffer.java b/src/java/com/threerings/openal/ClipBuffer.java index 518ff75df..c39de189c 100644 --- a/src/java/com/threerings/openal/ClipBuffer.java +++ b/src/java/com/threerings/openal/ClipBuffer.java @@ -27,14 +27,12 @@ import java.nio.IntBuffer; import org.lwjgl.BufferUtils; import org.lwjgl.openal.AL10; -import com.samskivert.util.LRUHashMap; import com.samskivert.util.ObserverList; /** * Represents a sound that has been loaded into the OpenAL system. */ public class ClipBuffer - implements LRUHashMap.LRUItem { /** Used to notify parties interested in when a clip is loaded. */ public static interface Observer @@ -164,8 +162,10 @@ public class ClipBuffer } } - // documentation inherited from interface LRUHashMap.LRUItem - public void removedFromMap (LRUHashMap map) + /** + * Frees up the internal audio buffers associated with this clip. + */ + public void dispose () { if (_bufferId != null) { // we've been given the boot, free up our buffer diff --git a/src/java/com/threerings/openal/SoundManager.java b/src/java/com/threerings/openal/SoundManager.java index 8e3759ba8..f561bf269 100644 --- a/src/java/com/threerings/openal/SoundManager.java +++ b/src/java/com/threerings/openal/SoundManager.java @@ -120,6 +120,13 @@ public class SoundManager return; } + // configure our LRU map with a removal observer + _clips.setRemovalObserver(new LRUHashMap.RemovalObserver() { + public void removedFromMap (LRUHashMap map, Object item) { + ((ClipBuffer)item).dispose(); + } + }); + // create our loading queue _toLoad = new Queue();