From 6bba3a6df8520b3a38ca261c1e3ac4b25e22dbad Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sun, 16 Aug 2020 18:21:06 -0400 Subject: [PATCH] v0.8.2a: adjusted sync checks in Sample to fix hitching --- .../java/com/watabou/noosa/audio/Sample.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/SPD-classes/src/main/java/com/watabou/noosa/audio/Sample.java b/SPD-classes/src/main/java/com/watabou/noosa/audio/Sample.java index 139b12245..250f004c5 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/audio/Sample.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/audio/Sample.java @@ -116,7 +116,7 @@ public enum Sample { float pitch; } - private static HashSet delayedSFX = new HashSet<>(); + private static final HashSet delayedSFX = new HashSet<>(); public void playDelayed( Object id, float delay ){ playDelayed( id, delay, 1 ); @@ -130,7 +130,7 @@ public enum Sample { playDelayed( id, delay, volume, volume, pitch ); } - public synchronized void playDelayed( Object id, float delay, float leftVolume, float rightVolume, float pitch ) { + public void playDelayed( Object id, float delay, float leftVolume, float rightVolume, float pitch ) { if (delay <= 0) { play(id, leftVolume, rightVolume, pitch); return; @@ -141,16 +141,20 @@ public enum Sample { sfx.leftVol = leftVolume; sfx.rightVol = rightVolume; sfx.pitch = pitch; - delayedSFX.add(sfx); + synchronized (delayedSFX) { + delayedSFX.add(sfx); + } } - public synchronized void update(){ - if (delayedSFX.isEmpty()) return; - for (DelayedSoundEffect sfx : delayedSFX.toArray(new DelayedSoundEffect[0])){ - sfx.delay -= Game.elapsed; - if (sfx.delay <= 0){ - delayedSFX.remove(sfx); - play(sfx.id, sfx.leftVol, sfx.rightVol, sfx.pitch); + public void update(){ + synchronized (delayedSFX) { + if (delayedSFX.isEmpty()) return; + for (DelayedSoundEffect sfx : delayedSFX.toArray(new DelayedSoundEffect[0])) { + sfx.delay -= Game.elapsed; + if (sfx.delay <= 0) { + delayedSFX.remove(sfx); + play(sfx.id, sfx.leftVol, sfx.rightVol, sfx.pitch); + } } } }