Audio-Methoden synchronisiert

This commit is contained in:
ngb
2022-07-25 17:44:22 +02:00
parent ecbe2b4f6b
commit bd8c0e37a7
2 changed files with 15 additions and 15 deletions

View File

@@ -122,7 +122,7 @@ public class Music implements Audio {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public void play() { public synchronized void play() {
if( openLine() ) { if( openLine() ) {
TaskRunner.run(new Runnable() { TaskRunner.run(new Runnable() {
@Override @Override
@@ -147,7 +147,7 @@ public class Music implements Audio {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public void loop() { public synchronized void loop() {
looping = true; looping = true;
play(); play();
} }
@@ -156,7 +156,7 @@ public class Music implements Audio {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public void stop() { public synchronized void stop() {
playing = false; playing = false;
looping = false; looping = false;
dispose(); dispose();
@@ -166,7 +166,7 @@ public class Music implements Audio {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public void dispose() { public synchronized void dispose() {
if( audioLine != null ) { if( audioLine != null ) {
if( audioLine.isRunning() ) { if( audioLine.isRunning() ) {
playing = false; playing = false;
@@ -175,7 +175,6 @@ public class Music implements Audio {
if( audioLine.isOpen() ) { if( audioLine.isOpen() ) {
audioLine.drain(); audioLine.drain();
audioLine.close(); audioLine.close();
} }
} }
try { try {
@@ -189,7 +188,7 @@ public class Music implements Audio {
audioStream = null; audioStream = null;
} }
private void stream() { private synchronized void stream() {
audioLine.start(); audioLine.start();
playing = true; playing = true;
if( eventDispatcher != null ) { if( eventDispatcher != null ) {

View File

@@ -1,8 +1,8 @@
package schule.ngb.zm.media; package schule.ngb.zm.media;
import schule.ngb.zm.util.Log; import schule.ngb.zm.util.Log;
import schule.ngb.zm.util.io.ResourceStreamProvider;
import schule.ngb.zm.util.Validator; import schule.ngb.zm.util.Validator;
import schule.ngb.zm.util.io.ResourceStreamProvider;
import javax.sound.sampled.*; import javax.sound.sampled.*;
import java.io.IOException; import java.io.IOException;
@@ -125,7 +125,7 @@ public class Sound implements Audio {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public void stop() { public synchronized void stop() {
looping = false; looping = false;
if( audioClip.isRunning() ) { if( audioClip.isRunning() ) {
audioClip.stop(); audioClip.stop();
@@ -137,7 +137,7 @@ public class Sound implements Audio {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public void play() { public synchronized void play() {
if( this.openClip() ) { if( this.openClip() ) {
audioClip.start(); audioClip.start();
playing = true; playing = true;
@@ -176,7 +176,7 @@ public class Sound implements Audio {
* allerdings wird der aufrufende Thread nicht blockiert und * allerdings wird der aufrufende Thread nicht blockiert und
* {@link #dispose()} automatisch am Ende aufgerufen. * {@link #dispose()} automatisch am Ende aufgerufen.
*/ */
public void playOnce() { public synchronized void playOnce() {
disposeAfterPlay = true; disposeAfterPlay = true;
play(); play();
} }
@@ -200,16 +200,17 @@ public class Sound implements Audio {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public void loop() { public synchronized void loop() {
loop(Clip.LOOP_CONTINUOUSLY); loop(Clip.LOOP_CONTINUOUSLY);
} }
/** /**
* Wiederholt den Sound die angegebene Anzahl an Wiederholungen ab und stoppt * Wiederholt den Sound die angegebene Anzahl an Wiederholungen ab und
* die Wiedergabe dann. * stoppt die Wiedergabe dann.
*
* @param count Anzahl der Wiederholungen. * @param count Anzahl der Wiederholungen.
*/ */
public void loop( int count ) { public synchronized void loop( int count ) {
if( count > 0 ) { if( count > 0 ) {
int loopCount = count; int loopCount = count;
if( loopCount != Clip.LOOP_CONTINUOUSLY ) { if( loopCount != Clip.LOOP_CONTINUOUSLY ) {
@@ -231,7 +232,7 @@ public class Sound implements Audio {
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override @Override
public void dispose() { public synchronized void dispose() {
if( audioClip != null ) { if( audioClip != null ) {
if( audioClip.isRunning() ) { if( audioClip.isRunning() ) {
audioClip.stop(); audioClip.stop();