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}
*/
@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 ) {

View File

@@ -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();