diff options
Diffstat (limited to 'src/native/extal.c')
-rw-r--r-- | src/native/extal.c | 451 |
1 files changed, 0 insertions, 451 deletions
diff --git a/src/native/extal.c b/src/native/extal.c deleted file mode 100644 index 45947dc..0000000 --- a/src/native/extal.c +++ /dev/null @@ -1,451 +0,0 @@ -/* - * Copyright (c) 2002 Light Weight Java Game Library Project - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of 'Light Weight Java Game Library' nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "stdio.h" -#include "extal.h" -#include "common_tools.h" - -#ifdef _X11 -#include "dlfcn.h" -#endif - -/** - * $Id$ - * - * This file contains the AL extension assigning mechanism - * - * @author Brian Matzon <[email protected]> - * @version $Revision$ - */ -alEnablePROC alEnable = NULL; -alDisablePROC alDisable = NULL; -alIsEnabledPROC alIsEnabled = NULL; -alHintPROC alHint = NULL; -alGetBooleanPROC alGetBoolean = NULL; -alGetIntegerPROC alGetInteger = NULL; -alGetFloatPROC alGetFloat = NULL; -alGetDoublePROC alGetDouble = NULL; -alGetBooleanvPROC alGetBooleanv = NULL; -alGetIntegervPROC alGetIntegerv = NULL; -alGetFloatvPROC alGetFloatv = NULL; -alGetDoublevPROC alGetDoublev = NULL; -alGetStringPROC alGetString = NULL; -alGetErrorPROC alGetError = NULL; -alIsExtensionPresentPROC alIsExtensionPresent = NULL; -alGetProcAddressPROC alGetProcAddress = NULL; -alGetEnumValuePROC alGetEnumValue = NULL; -alListeneriPROC alListeneri = NULL; -alListenerfPROC alListenerf = NULL; -alListener3fPROC alListener3f = NULL; -alListenerfvPROC alListenerfv = NULL; -alGetListeneriPROC alGetListeneri = NULL; -alGetListenerfPROC alGetListenerf = NULL; -alGetListener3fPROC alGetListener3f = NULL; -alGetListenerfvPROC alGetListenerfv = NULL; -alGenSourcesPROC alGenSources = NULL; -alDeleteSourcesPROC alDeleteSources = NULL; -alIsSourcePROC alIsSource = NULL; -alSourceiPROC alSourcei = NULL; -alSourcefPROC alSourcef = NULL; -alSource3fPROC alSource3f = NULL; -alSourcefvPROC alSourcefv = NULL; -alGetSourceiPROC alGetSourcei = NULL; -alGetSourcefPROC alGetSourcef = NULL; -alGetSource3fPROC alGetSource3f = NULL; -alGetSourcefvPROC alGetSourcefv = NULL; -alSourcePlayvPROC alSourcePlayv = NULL; -alSourcePausevPROC alSourcePausev = NULL; -alSourceStopvPROC alSourceStopv = NULL; -alSourceRewindvPROC alSourceRewindv = NULL; -alSourcePlayPROC alSourcePlay = NULL; -alSourcePausePROC alSourcePause = NULL; -alSourceStopPROC alSourceStop = NULL; -alSourceRewindPROC alSourceRewind = NULL; -alGenBuffersPROC alGenBuffers = NULL; -alDeleteBuffersPROC alDeleteBuffers = NULL; -alIsBufferPROC alIsBuffer = NULL; -alBufferDataPROC alBufferData = NULL; -alGetBufferiPROC alGetBufferi = NULL; -alGetBufferfPROC alGetBufferf = NULL; -alSourceQueueBuffersPROC alSourceQueueBuffers = NULL; -alSourceUnqueueBuffersPROC alSourceUnqueueBuffers = NULL; -alDistanceModelPROC alDistanceModel = NULL; -alDopplerFactorPROC alDopplerFactor = NULL; -alDopplerVelocityPROC alDopplerVelocity = NULL; -alcGetStringPROC alcGetString = NULL; -alcGetIntegervPROC alcGetIntegerv = NULL; -alcOpenDevicePROC alcOpenDevice = NULL; -alcCloseDevicePROC alcCloseDevice = NULL; -alcCreateContextPROC alcCreateContext = NULL; -alcMakeContextCurrentPROC alcMakeContextCurrent = NULL; -alcProcessContextPROC alcProcessContext = NULL; -alcGetCurrentContextPROC alcGetCurrentContext = NULL; -alcGetContextsDevicePROC alcGetContextsDevice = NULL; -alcSuspendContextPROC alcSuspendContext = NULL; -alcDestroyContextPROC alcDestroyContext = NULL; -alcGetErrorPROC alcGetError = NULL; -alcIsExtensionPresentPROC alcIsExtensionPresent = NULL; -alcGetProcAddressPROC alcGetProcAddress = NULL; -alcGetEnumValuePROC alcGetEnumValue = NULL; - -#ifdef _WIN32 -EAXSet eaxSet; // EAXSet function, ret$ -EAXGet eaxGet; // EAXGet function, ret$ - -/* Handle to OpenAL Library */ -HMODULE handleOAL; -#endif -#ifdef _X11 -void* handleOAL; -#endif -#ifdef _AGL -#include "mach-o/dyld.h" -#include "stdlib.h" -#include "string.h" -const struct mach_header* handleOAL; -#endif - -/* Loads OpenAL */ -static int LoadOpenAL(JNIEnv *env, jobjectArray oalPaths); - -/* Unloads OpenAL */ -static void UnLoadOpenAL(void); - -/* Gets a pointer to the named function */ -static void* GetFunctionPointer(const char* function); - -/* Loads OpenAL basic functions */ -static int LoadAL(void); - -/* Loads OpenAL ALC functions */ -static int LoadALC(void); - -/* Loads any extensions to OpenAL */ -static int LoadALExtensions(void); - -static void *NativeGetFunctionPointer(const char *function) { -#ifdef _WIN32 - return GetProcAddress(handleOAL, function); -#endif -#ifdef _X11 - return dlsym(handleOAL, function); -#endif -#ifdef _AGL - char *mac_symbol_name = (char *)malloc((strlen(function) + 2)*sizeof(char)); - if (mac_symbol_name == NULL) - return NULL; - mac_symbol_name[0] = '_'; - strcpy(&(mac_symbol_name[1]), function); - NSSymbol symbol = NSLookupSymbolInImage(handleOAL, mac_symbol_name, NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR); - free(mac_symbol_name); - if (symbol == NULL) - return NULL; - return NSAddressOfSymbol(symbol); -#endif -} - -/** - * Retrieves a pointer to the named function - * - * @param function Name of function - * @return pointer to named function, or NULL if not found - */ -static void* GetFunctionPointer(const char* function) { - void *p = NativeGetFunctionPointer(function); - if (p == NULL) { -#ifdef _DEBUG - printf("Could not locate symbol %s\n", function); -#endif - } - return p; -} - -/** - * Loads the OpenAL Library - */ -static int LoadOpenAL(JNIEnv *env, jobjectArray oalPaths) { - - jsize pathcount = (*env)->GetArrayLength(env,oalPaths); -#ifdef _DEBUG - printf("Found %d OpenAL paths\n", (int)pathcount); -#endif - int i; - for(i=0;i<pathcount;i++) { - jstring path = (jstring) (*env)->GetObjectArrayElement(env,oalPaths, i); - const char *path_str = (*env)->GetStringUTFChars(env,path, NULL); -#ifdef _DEBUG - printf("Testing '%s'\n", path_str); -#endif -#ifdef _WIN32 - handleOAL = LoadLibrary(path_str); -#endif -#ifdef _X11 - handleOAL = dlopen(path_str, RTLD_LAZY); -#endif -#ifdef _AGL - handleOAL = NSAddImage(path_str, NSADDIMAGE_OPTION_RETURN_ON_ERROR); -#endif - if (handleOAL != NULL) { -#ifdef _DEBUG - printf("Found OpenAL at '%s'\n", path_str); -#endif - return 1; - } - (*env)->ReleaseStringUTFChars(env,path, path_str); - } - throwOpenALException(env, "Could not load openal library."); - return 0; -} - -/** - * Unloads the OpenAL Library - */ -static void UnLoadOpenAL() { -#ifdef _WIN32 - FreeLibrary(handleOAL); -#endif -#ifdef _X11 - dlclose(handleOAL); -#endif -#ifdef _AGL - // Cannot remove the image -#endif -} - -/** - * Initializes OpenAL by loading the library - */ -void InitializeOpenAL(JNIEnv *env, jobjectArray oalPaths) { - if(handleOAL != NULL) { - return; - } - - //load our library - if (!LoadOpenAL(env, oalPaths)) { - return; - } - - //load basic OpenAL functions - if(!LoadAL()) { - throwOpenALException(env, "Could not load OpenAL function pointers."); - return; - } - - //load OpenAL context functions - if(!LoadALC()) { - throwOpenALException(env, "Could not load ALC function pointers."); - return; - } - - //load OpenAL extensions - if(!LoadALExtensions()) { - throwOpenALException(env, "Could not load AL extension function pointers."); - return; - } -} - -/** - * Called to deinitialize OpenAL - */ -void DeInitializeOpenAL() { - UnLoadOpenAL(); - handleOAL = 0; -} - -/** - * Loads the basic OpenAL functions - * - * @return true if all methods were loaded, false if one of the methods could not be loaded - */ -static int LoadAL() { - alEnable = (alEnablePROC) GetFunctionPointer("alEnable"); - alDisable = (alDisablePROC) GetFunctionPointer("alDisable"); - alIsEnabled = (alIsEnabledPROC) GetFunctionPointer("alIsEnabled"); - //alHint = (alHintPROC) GetFunctionPointer("alHint"); - //alGetintean = (alGetinteanPROC) GetFunctionPointer("alGetintean"); - alGetInteger = (alGetIntegerPROC) GetFunctionPointer("alGetInteger"); - alGetFloat = (alGetFloatPROC) GetFunctionPointer("alGetFloat"); - alGetDouble = (alGetDoublePROC) GetFunctionPointer("alGetDouble"); - //alGetinteanv = (alGetinteanvPROC) GetFunctionPointer("alGetinteanv"); - alGetIntegerv = (alGetIntegervPROC) GetFunctionPointer("alGetIntegerv"); - alGetFloatv = (alGetFloatvPROC) GetFunctionPointer("alGetFloatv"); - alGetDoublev = (alGetDoublevPROC) GetFunctionPointer("alGetDoublev"); - alGetString = (alGetStringPROC) GetFunctionPointer("alGetString"); - alGetError = (alGetErrorPROC) GetFunctionPointer("alGetError"); - alIsExtensionPresent = (alIsExtensionPresentPROC) GetFunctionPointer("alIsExtensionPresent"); - alGetProcAddress = (alGetProcAddressPROC) GetFunctionPointer("alGetProcAddress"); - alGetEnumValue = (alGetEnumValuePROC) GetFunctionPointer("alGetEnumValue"); - alListeneri = (alListeneriPROC) GetFunctionPointer("alListeneri"); - alListenerf = (alListenerfPROC) GetFunctionPointer("alListenerf"); - alListener3f = (alListener3fPROC) GetFunctionPointer("alListener3f"); - alListenerfv = (alListenerfvPROC) GetFunctionPointer("alListenerfv"); - alGetListeneri = (alGetListeneriPROC) GetFunctionPointer("alGetListeneri"); - alGetListenerf = (alGetListenerfPROC) GetFunctionPointer("alGetListenerf"); - alGetListener3f = (alGetListener3fPROC) GetFunctionPointer("alGetListener3f"); - alGetListenerfv = (alGetListenerfvPROC) GetFunctionPointer("alGetListenerfv"); - alGenSources = (alGenSourcesPROC) GetFunctionPointer("alGenSources"); - alDeleteSources = (alDeleteSourcesPROC) GetFunctionPointer("alDeleteSources"); - alIsSource = (alIsSourcePROC) GetFunctionPointer("alIsSource"); - alSourcei = (alSourceiPROC) GetFunctionPointer("alSourcei"); - alSourcef = (alSourcefPROC) GetFunctionPointer("alSourcef"); - alSource3f = (alSource3fPROC) GetFunctionPointer("alSource3f"); - alSourcefv = (alSourcefvPROC) GetFunctionPointer("alSourcefv"); - alGetSourcei = (alGetSourceiPROC) GetFunctionPointer("alGetSourcei"); - alGetSourcef = (alGetSourcefPROC) GetFunctionPointer("alGetSourcef"); - alGetSource3f = (alGetSource3fPROC) GetFunctionPointer("alGetSource3f"); - alGetSourcefv = (alGetSourcefvPROC) GetFunctionPointer("alGetSourcefv"); - alSourcePlayv = (alSourcePlayvPROC) GetFunctionPointer("alSourcePlayv"); - alSourcePausev = (alSourcePausevPROC) GetFunctionPointer("alSourcePausev"); - alSourceStopv = (alSourceStopvPROC) GetFunctionPointer("alSourceStopv"); - alSourceRewindv = (alSourceRewindvPROC) GetFunctionPointer("alSourceRewindv"); - alSourcePlay = (alSourcePlayPROC) GetFunctionPointer("alSourcePlay"); - alSourcePause = (alSourcePausePROC) GetFunctionPointer("alSourcePause"); - alSourceStop = (alSourceStopPROC) GetFunctionPointer("alSourceStop"); - alSourceRewind = (alSourceRewindPROC) GetFunctionPointer("alSourceRewind"); - alGenBuffers = (alGenBuffersPROC) GetFunctionPointer("alGenBuffers"); - alDeleteBuffers = (alDeleteBuffersPROC) GetFunctionPointer("alDeleteBuffers"); - alIsBuffer = (alIsBufferPROC) GetFunctionPointer("alIsBuffer"); - alBufferData = (alBufferDataPROC) GetFunctionPointer("alBufferData"); - alGetBufferi = (alGetBufferiPROC) GetFunctionPointer("alGetBufferi"); - alGetBufferf = (alGetBufferfPROC) GetFunctionPointer("alGetBufferf"); - alSourceQueueBuffers = (alSourceQueueBuffersPROC) GetFunctionPointer("alSourceQueueBuffers"); - alSourceUnqueueBuffers = (alSourceUnqueueBuffersPROC) GetFunctionPointer("alSourceUnqueueBuffers"); - alDistanceModel = (alDistanceModelPROC) GetFunctionPointer("alDistanceModel"); - alDopplerFactor = (alDopplerFactorPROC) GetFunctionPointer("alDopplerFactor"); - alDopplerVelocity = (alDopplerVelocityPROC) GetFunctionPointer("alDopplerVelocity"); - - return - alEnable != NULL && - alDisable != NULL && - alIsEnabled != NULL && - //alHint != NULL && - //alGetintean != NULL && - alGetInteger != NULL && - alGetFloat != NULL && - alGetDouble != NULL && - //alGetinteanv != NULL && - alGetIntegerv != NULL && - alGetFloatv != NULL && - alGetDoublev != NULL && - alGetString != NULL && - alGetError != NULL && - alIsExtensionPresent != NULL && - alGetProcAddress != NULL && - alGetEnumValue != NULL && - alListeneri != NULL && - alListenerf != NULL && - alListener3f != NULL && - alListenerfv != NULL && - alGetListeneri != NULL && - alGetListenerf != NULL && - alGetListener3f != NULL && - alGetListenerfv != NULL && - alGenSources != NULL && - alDeleteSources != NULL && - alIsSource != NULL && - alSourcei != NULL && - alSourcef != NULL && - alSource3f != NULL && - alSourcefv != NULL && - alGetSourcei != NULL && - alGetSourcef != NULL && - alGetSource3f != NULL && - alGetSourcefv != NULL && - alSourcePlayv != NULL && - alSourcePausev != NULL && - alSourceStopv != NULL && - alSourceRewindv != NULL && - alSourcePlay != NULL && - alSourcePause != NULL && - alSourceStop != NULL && - alSourceRewind != NULL && - alGenBuffers != NULL && - alDeleteBuffers != NULL && - alIsBuffer != NULL && - alBufferData != NULL && - alGetBufferi != NULL && - alGetBufferf != NULL && - alSourceQueueBuffers != NULL && - alSourceUnqueueBuffers != NULL && - alDistanceModel != NULL && - alDopplerFactor != NULL && - alDopplerVelocity != NULL; -} - -/** - * Loads the context OpenAL functions - * - * @return true if all methods were loaded, false if one of the methods could not be loaded - */ -static int LoadALC() { - alcGetString = (alcGetStringPROC) GetFunctionPointer("alcGetString"); - alcGetIntegerv = (alcGetIntegervPROC) GetFunctionPointer("alcGetIntegerv"); - alcOpenDevice = (alcOpenDevicePROC) GetFunctionPointer("alcOpenDevice"); - alcCloseDevice = (alcCloseDevicePROC) GetFunctionPointer("alcCloseDevice"); - alcCreateContext = (alcCreateContextPROC) GetFunctionPointer("alcCreateContext"); - alcMakeContextCurrent = (alcMakeContextCurrentPROC) GetFunctionPointer("alcMakeContextCurrent"); - alcProcessContext = (alcProcessContextPROC) GetFunctionPointer("alcProcessContext"); - alcGetCurrentContext = (alcGetCurrentContextPROC) GetFunctionPointer("alcGetCurrentContext"); - alcGetContextsDevice = (alcGetContextsDevicePROC) GetFunctionPointer("alcGetContextsDevice"); - alcSuspendContext = (alcSuspendContextPROC) GetFunctionPointer("alcSuspendContext"); - alcDestroyContext = (alcDestroyContextPROC) GetFunctionPointer("alcDestroyContext"); - alcGetError = (alcGetErrorPROC) GetFunctionPointer("alcGetError"); - alcIsExtensionPresent = (alcIsExtensionPresentPROC) GetFunctionPointer("alcIsExtensionPresent"); - alcGetProcAddress = (alcGetProcAddressPROC) GetFunctionPointer("alcGetProcAddress"); - alcGetEnumValue = (alcGetEnumValuePROC) GetFunctionPointer("alcGetEnumValue"); - - return - alcGetString != NULL && - alcGetIntegerv != NULL && - alcOpenDevice != NULL && - alcCloseDevice != NULL && - alcCreateContext != NULL && - alcMakeContextCurrent != NULL && - alcProcessContext != NULL && - alcGetCurrentContext != NULL && - alcGetContextsDevice != NULL && - alcSuspendContext != NULL && - alcDestroyContext != NULL && - alcGetError != NULL && - alcIsExtensionPresent != NULL && - alcGetProcAddress != NULL && - alcGetEnumValue != NULL; -} - -/** - * Loads the OpenAL extensions functions - * - * @return true if all methods were loaded, false if one of the methods could not be loaded - */ -static int LoadALExtensions() { - return 1; -} |