From 9ef253d60859c4dc3c585b2a4f4594ee6319dc43 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 16 Sep 2020 20:18:51 -0400 Subject: [PATCH] v0.9.0: fixed various errors with loading in the sample class --- .../java/com/watabou/noosa/audio/Sample.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 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 250f004c5..323fc2fec 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 @@ -25,6 +25,7 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.audio.Sound; import com.watabou.noosa.Game; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -60,17 +61,27 @@ public enum Sample { } } - public void load( final String... assets ) { + public synchronized void load( final String... assets ) { + + final ArrayList toLoad = new ArrayList<>(); + + for (String asset : assets){ + if (!ids.containsKey(asset)){ + toLoad.add(asset); + } + } + + //don't make a new thread of all assets are already loaded + if (toLoad.isEmpty()) return; //load in a separate thread to prevent this blocking the UI new Thread(){ @Override public void run() { - synchronized (Sample.class) { - for (String asset : assets) { - if (!ids.containsKey(asset)) { - ids.put(asset, Gdx.audio.newSound(Gdx.files.internal(asset))); - } + for (String asset : toLoad) { + Sound newSound = Gdx.audio.newSound(Gdx.files.internal(asset)); + synchronized (INSTANCE) { + ids.put(asset, newSound); } } }