From 37977b4fe48cdc6be6f8e4938b5c79371d527a5d Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Wed, 17 May 2023 16:26:56 +0200 Subject: AudioSink: Add exclusive locking allowing implementations to short-cut for less management overhead (-> OpenAL + Synthesizer) --- src/java/com/jogamp/common/av/AudioSink.java | 12 ++++++++++++ src/java/jogamp/common/av/JavaSoundAudioSink.java | 6 ++++++ src/java/jogamp/common/av/NullAudioSink.java | 6 ++++++ 3 files changed, 24 insertions(+) (limited to 'src/java') diff --git a/src/java/com/jogamp/common/av/AudioSink.java b/src/java/com/jogamp/common/av/AudioSink.java index 3973d33..d41e05b 100644 --- a/src/java/com/jogamp/common/av/AudioSink.java +++ b/src/java/com/jogamp/common/av/AudioSink.java @@ -241,6 +241,18 @@ public interface AudioSink { } } + /** + * Exclusively locks this instance for the calling thread, if implementation utilizes locking. + * @see #unlockExclusive() + */ + public void lockExclusive(); + + /** + * Releases the exclusive lock for the calling thread, if implementation utilizes locking. + * @see #lockExclusive() + */ + public void unlockExclusive(); + /** * Returns the available state of this instance. *

diff --git a/src/java/jogamp/common/av/JavaSoundAudioSink.java b/src/java/jogamp/common/av/JavaSoundAudioSink.java index 4e4fdec..48a2a4d 100644 --- a/src/java/jogamp/common/av/JavaSoundAudioSink.java +++ b/src/java/jogamp/common/av/JavaSoundAudioSink.java @@ -83,6 +83,12 @@ public class JavaSoundAudioSink implements AudioSink { available = true; } + @Override + public final void lockExclusive() { } + + @Override + public final void unlockExclusive() { } + @Override public String toString() { return "JavaSoundSink[avail "+available+", dataLine "+info+", source "+auline+", bufferCount "+bufferCount+ diff --git a/src/java/jogamp/common/av/NullAudioSink.java b/src/java/jogamp/common/av/NullAudioSink.java index c1b0d33..6b918d9 100644 --- a/src/java/jogamp/common/av/NullAudioSink.java +++ b/src/java/jogamp/common/av/NullAudioSink.java @@ -46,6 +46,12 @@ public class NullAudioSink implements AudioSink { chosenFormat = null; } + @Override + public final void lockExclusive() { } + + @Override + public final void unlockExclusive() { } + @Override public boolean isAvailable() { return available; -- cgit v1.2.3