diff --git a/src/java/com/threerings/openal/Sound.java b/src/java/com/threerings/openal/Sound.java index 5c688bef0..1e6e5839f 100644 --- a/src/java/com/threerings/openal/Sound.java +++ b/src/java/com/threerings/openal/Sound.java @@ -176,6 +176,11 @@ public class Sound protected boolean play ( boolean allowDefer, final boolean loop, final StartObserver obs) { + // if we were unable to get our buffer, fail immediately + if (_buffer == null) { + return false; + } + // if we're not ready to go... if (!_buffer.isPlayable()) { if (allowDefer) { diff --git a/src/java/com/threerings/openal/SoundGroup.java b/src/java/com/threerings/openal/SoundGroup.java index feae3c89b..7bdbd5b9b 100644 --- a/src/java/com/threerings/openal/SoundGroup.java +++ b/src/java/com/threerings/openal/SoundGroup.java @@ -62,7 +62,10 @@ public class SoundGroup */ public void dispose () { - AL10.alDeleteSources(_sourceIds); + if (_sourceIds != null) { + AL10.alDeleteSources(_sourceIds); + _sourceIds = null; + } } protected SoundGroup ( @@ -84,6 +87,7 @@ public class SoundGroup if (errno != AL10.AL_NO_ERROR) { Log.warning("Failed to create sources [cprov=" + provider + ", sources=" + sources + ", errno=" + errno + "]."); + _sourceIds = null; // we'll have no sources which means all requests to play // sounds will silently fail as if all sources were in use