aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2023-05-17 16:26:56 +0200
committerSven Gothel <[email protected]>2023-05-17 16:26:56 +0200
commit37977b4fe48cdc6be6f8e4938b5c79371d527a5d (patch)
tree131f38b038bf7f03c9ae39ab884abb61a454eca4
parent270172bcbd91f96d4a38a3d73e23d744f57a25b8 (diff)
AudioSink: Add exclusive locking allowing implementations to short-cut for less management overhead (-> OpenAL + Synthesizer)
-rw-r--r--src/java/com/jogamp/common/av/AudioSink.java12
-rw-r--r--src/java/jogamp/common/av/JavaSoundAudioSink.java6
-rw-r--r--src/java/jogamp/common/av/NullAudioSink.java6
3 files changed, 24 insertions, 0 deletions
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
@@ -242,6 +242,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 <code>available state</code> of this instance.
* <p>
* The <code>available state</code> is affected by 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
@@ -84,6 +84,12 @@ public class JavaSoundAudioSink implements AudioSink {
}
@Override
+ public final void lockExclusive() { }
+
+ @Override
+ public final void unlockExclusive() { }
+
+ @Override
public String toString() {
return "JavaSoundSink[avail "+available+", dataLine "+info+", source "+auline+", bufferCount "+bufferCount+
", chosen "+chosenFormat+", jsFormat "+format;
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
@@ -47,6 +47,12 @@ public class NullAudioSink implements AudioSink {
}
@Override
+ public final void lockExclusive() { }
+
+ @Override
+ public final void unlockExclusive() { }
+
+ @Override
public boolean isAvailable() {
return available;
}