diff options
author | Carsten Weisse <[email protected]> | 2006-12-08 17:46:20 +0000 |
---|---|---|
committer | Carsten Weisse <[email protected]> | 2006-12-08 17:46:20 +0000 |
commit | e862a6fab0809a695cc4cf8fa12ce49c723dafad (patch) | |
tree | a80fe9120c4aeb943d877fb19b43d6e78764cf5a /src/jake2 | |
parent | ce92bd38a36b2b8b632de02258318825ff8da752 (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.java | 69 | ||||
-rw-r--r-- | src/jake2/sound/joal/JOALSoundImpl.java | 1 |
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 |