From bd8c0e37a7ac87465dc3e821a95e865e48653f2c Mon Sep 17 00:00:00 2001 From: "J. Neugebauer" Date: Mon, 25 Jul 2022 17:44:22 +0200 Subject: [PATCH] Audio-Methoden synchronisiert --- src/main/java/schule/ngb/zm/media/Music.java | 11 +++++------ src/main/java/schule/ngb/zm/media/Sound.java | 19 ++++++++++--------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/schule/ngb/zm/media/Music.java b/src/main/java/schule/ngb/zm/media/Music.java index d6d3813..539e1e5 100644 --- a/src/main/java/schule/ngb/zm/media/Music.java +++ b/src/main/java/schule/ngb/zm/media/Music.java @@ -122,7 +122,7 @@ public class Music implements Audio { * {@inheritDoc} */ @Override - public void play() { + public synchronized void play() { if( openLine() ) { TaskRunner.run(new Runnable() { @Override @@ -147,7 +147,7 @@ public class Music implements Audio { * {@inheritDoc} */ @Override - public void loop() { + public synchronized void loop() { looping = true; play(); } @@ -156,7 +156,7 @@ public class Music implements Audio { * {@inheritDoc} */ @Override - public void stop() { + public synchronized void stop() { playing = false; looping = false; dispose(); @@ -166,7 +166,7 @@ public class Music implements Audio { * {@inheritDoc} */ @Override - public void dispose() { + public synchronized void dispose() { if( audioLine != null ) { if( audioLine.isRunning() ) { playing = false; @@ -175,7 +175,6 @@ public class Music implements Audio { if( audioLine.isOpen() ) { audioLine.drain(); audioLine.close(); - } } try { @@ -189,7 +188,7 @@ public class Music implements Audio { audioStream = null; } - private void stream() { + private synchronized void stream() { audioLine.start(); playing = true; if( eventDispatcher != null ) { diff --git a/src/main/java/schule/ngb/zm/media/Sound.java b/src/main/java/schule/ngb/zm/media/Sound.java index 61dc4a8..fc329c8 100644 --- a/src/main/java/schule/ngb/zm/media/Sound.java +++ b/src/main/java/schule/ngb/zm/media/Sound.java @@ -1,8 +1,8 @@ package schule.ngb.zm.media; import schule.ngb.zm.util.Log; -import schule.ngb.zm.util.io.ResourceStreamProvider; import schule.ngb.zm.util.Validator; +import schule.ngb.zm.util.io.ResourceStreamProvider; import javax.sound.sampled.*; import java.io.IOException; @@ -125,7 +125,7 @@ public class Sound implements Audio { * {@inheritDoc} */ @Override - public void stop() { + public synchronized void stop() { looping = false; if( audioClip.isRunning() ) { audioClip.stop(); @@ -137,7 +137,7 @@ public class Sound implements Audio { * {@inheritDoc} */ @Override - public void play() { + public synchronized void play() { if( this.openClip() ) { audioClip.start(); playing = true; @@ -176,7 +176,7 @@ public class Sound implements Audio { * allerdings wird der aufrufende Thread nicht blockiert und * {@link #dispose()} automatisch am Ende aufgerufen. */ - public void playOnce() { + public synchronized void playOnce() { disposeAfterPlay = true; play(); } @@ -200,16 +200,17 @@ public class Sound implements Audio { * {@inheritDoc} */ @Override - public void loop() { + public synchronized void loop() { loop(Clip.LOOP_CONTINUOUSLY); } /** - * Wiederholt den Sound die angegebene Anzahl an Wiederholungen ab und stoppt - * die Wiedergabe dann. + * Wiederholt den Sound die angegebene Anzahl an Wiederholungen ab und + * stoppt die Wiedergabe dann. + * * @param count Anzahl der Wiederholungen. */ - public void loop( int count ) { + public synchronized void loop( int count ) { if( count > 0 ) { int loopCount = count; if( loopCount != Clip.LOOP_CONTINUOUSLY ) { @@ -231,7 +232,7 @@ public class Sound implements Audio { * {@inheritDoc} */ @Override - public void dispose() { + public synchronized void dispose() { if( audioClip != null ) { if( audioClip.isRunning() ) { audioClip.stop();