add dispose clips

This commit is contained in:
Anthony Calosa
2023-03-15 22:30:39 +08:00
parent e59bfb8a1f
commit 3a849e77ab
5 changed files with 33 additions and 6 deletions

View File

@@ -87,6 +87,14 @@ public class AudioClip implements IAudioClip {
getIdleClip().loop();
}
@Override
public void dispose() {
for (byte[] b : audioClips.values()) {
b = null;
}
audioClips.clear();
}
@Override
public final void stop() {
for (ClipWrapper clip: clips) {

View File

@@ -68,6 +68,14 @@ public class AudioClip implements IAudioClip {
clip.loop();
}
@Override
public void dispose() {
if (clip != null) {
clip.dispose();
clip = null;
}
}
public final void stop() {
if (clip == null) {
return;

View File

@@ -5,4 +5,5 @@ public interface IAudioClip {
boolean isDone();
void stop();
void loop();
void dispose();
}

View File

@@ -15,4 +15,7 @@ public class NoSoundClip implements IAudioClip {
@Override
public void loop() { }
@Override
public void dispose() { }
}

View File

@@ -57,9 +57,9 @@ public class SoundSystem {
final String resource = type.getResourceFileName();
clip = GuiBase.getInterface().createAudioClip(resource);
if (clip == null) {
clip = emptySound;
}
loadedClips.put(type, clip);
return emptySound;
} else
loadedClips.put(type, clip);
}
return clip;
}
@@ -85,9 +85,9 @@ public class SoundSystem {
if (null == clip) { // cache miss
clip = GuiBase.getInterface().createAudioClip(fileName);
if (clip == null) {
clip = emptySound;
}
loadedScriptClips.put(fileName, clip);
return emptySound;
} else
loadedScriptClips.put(fileName, clip);
}
return clip;
}
@@ -243,6 +243,7 @@ public class SoundSystem {
currentTrack.dispose();
currentTrack = null;
}
invalidateSoundCache();
}
public void fadeModifier(float value) {
@@ -288,7 +289,13 @@ public class SoundSystem {
}
public void invalidateSoundCache() {
for (IAudioClip c : loadedClips.values()) {
c.dispose();
}
loadedClips.clear();
for (IAudioClip c : loadedScriptClips.values()) {
c.dispose();
}
loadedScriptClips.clear();
}