aboutsummaryrefslogtreecommitdiffstats
path: root/src/jake2
diff options
context:
space:
mode:
authorCarsten Weisse <[email protected]>2006-12-08 17:46:20 +0000
committerCarsten Weisse <[email protected]>2006-12-08 17:46:20 +0000
commite862a6fab0809a695cc4cf8fa12ce49c723dafad (patch)
treea80fe9120c4aeb943d877fb19b43d6e78764cf5a /src/jake2
parentce92bd38a36b2b8b632de02258318825ff8da752 (diff)
add the ALut class from joal only for the current webstart version moved to jake2.sound.joal package
Diffstat (limited to 'src/jake2')
-rw-r--r--src/jake2/sound/joal/ALut.java69
-rw-r--r--src/jake2/sound/joal/JOALSoundImpl.java1
2 files changed, 69 insertions, 1 deletions
diff --git a/src/jake2/sound/joal/ALut.java b/src/jake2/sound/joal/ALut.java
new file mode 100644
index 0000000..7d419f7
--- /dev/null
+++ b/src/jake2/sound/joal/ALut.java
@@ -0,0 +1,69 @@
+package jake2.sound.joal;
+
+
+import net.java.games.joal.*;
+
+/**
+ * @author Athomas Goldberg
+ *
+ */
+public final class ALut {
+
+ private static ALC alc;
+ private static ALCdevice device;
+ private static ALCcontext context;
+ private static Thread initializingThread;
+
+ private ALut() { }
+
+ /** Initializes the OpenAL Utility Toolkit, creates an OpenAL
+ context and makes it current on the current thread. The ALut may
+ only be initialized on one thread at any given time. */
+ public static synchronized void alutInit() throws ALException {
+ if (context != null) {
+ throw new ALException("Already initialized on thread " + initializingThread.getName());
+ }
+ if (alc == null) {
+ alc = ALFactory.getALC();
+ }
+ String deviceName = null;
+ ALCdevice d = alc.alcOpenDevice(deviceName);
+ if (d == null) {
+ throw new ALException("Error opening default OpenAL device");
+ }
+ ALCcontext c = alc.alcCreateContext(d, null);
+ if (c == null) {
+ alc.alcCloseDevice(d);
+ throw new ALException("Error creating OpenAL context");
+ }
+ alc.alcMakeContextCurrent(c);
+ if (alc.alcGetError(d) != 0) {
+ alc.alcDestroyContext(c);
+ alc.alcCloseDevice(d);
+ throw new ALException("Error making OpenAL context current");
+ }
+ // Fully initialized; finish setup
+ device = d;
+ context = c;
+ initializingThread = Thread.currentThread();
+ }
+
+ /** Shuts down the OpenAL Utility Toolkit; releases and destroys the
+ internal OpenAL context and closes the output device. Must be
+ called from the same thread as alutInit(). Most applications
+ should not need to call this; only those which wish to toggle
+ sound on / off at run time by initializing and un-initializing
+ OpenAL need to call it. */
+ public static synchronized void alutExit() throws ALException {
+ if (context == null) {
+ throw new ALException("Not initialized");
+ }
+ alc.alcMakeContextCurrent(null);
+ alc.alcDestroyContext(context);
+ alc.alcCloseDevice(device);
+ context = null;
+ device = null;
+ initializingThread = null;
+ }
+
+}
diff --git a/src/jake2/sound/joal/JOALSoundImpl.java b/src/jake2/sound/joal/JOALSoundImpl.java
index 764480b..2bbf3d7 100644
--- a/src/jake2/sound/joal/JOALSoundImpl.java
+++ b/src/jake2/sound/joal/JOALSoundImpl.java
@@ -18,7 +18,6 @@ import java.nio.*;
import net.java.games.joal.*;
import net.java.games.joal.eax.EAX;
import net.java.games.joal.eax.EAXFactory;
-import net.java.games.joal.util.ALut;
/**
* JOALSoundImpl