mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2025-03-23 03:12:25 +00:00
Merge qal.c into one generic file for all platforms
To archive this, 3 new functions Sys_GetProcAddress(), Sys_LoadLibrary() and Sys_FreeLibrary() were added to abstract the library loading code into a platform independend API.
This commit is contained in:
parent
399c581f06
commit
e5f70fcf40
10 changed files with 222 additions and 754 deletions
3
Makefile
3
Makefile
|
@ -452,6 +452,7 @@ GAME_OBJS_ = \
|
|||
|
||||
# Used by the client
|
||||
CLIENT_OBJS_ := \
|
||||
src/backends/generic/qal.o \
|
||||
src/backends/sdl/cd.o \
|
||||
src/backends/sdl/sound.o \
|
||||
src/client/cl_cin.o \
|
||||
|
@ -515,7 +516,6 @@ ifeq ($(OSTYPE), Windows)
|
|||
CLIENT_OBJS_ += \
|
||||
src/backends/windows/mem.o \
|
||||
src/backends/windows/network.o \
|
||||
src/backends/windows/qal.o \
|
||||
src/backends/windows/system.o \
|
||||
src/backends/windows/vid.o
|
||||
else
|
||||
|
@ -523,7 +523,6 @@ CLIENT_OBJS_ += \
|
|||
src/backends/unix/hunk.o \
|
||||
src/backends/unix/main.o \
|
||||
src/backends/unix/network.o \
|
||||
src/backends/unix/qal.o \
|
||||
src/backends/unix/signalhandler.o \
|
||||
src/backends/unix/system.o \
|
||||
src/backends/unix/vid.o
|
||||
|
|
|
@ -34,13 +34,10 @@
|
|||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
#include <AL/alext.h>
|
||||
#include <windows.h>
|
||||
|
||||
#include "../../common/header/common.h"
|
||||
#include "header/qal.h"
|
||||
|
||||
#define GPA(a) (void *)GetProcAddress(handle, a)
|
||||
|
||||
static ALCcontext *context;
|
||||
static ALCdevice *device;
|
||||
static cvar_t *al_device;
|
||||
|
@ -324,7 +321,7 @@ QAL_Shutdown()
|
|||
qalDeleteFilters = NULL;
|
||||
|
||||
/* Unload the shared lib */
|
||||
FreeLibrary(handle);
|
||||
Sys_FreeLibrary(handle);
|
||||
handle = NULL;
|
||||
}
|
||||
|
||||
|
@ -336,13 +333,13 @@ qboolean
|
|||
QAL_Init()
|
||||
{
|
||||
/* DEFAULT_OPENAL_DRIVER is defined at compile time via the compiler */
|
||||
al_driver = Cvar_Get( "al_driver", DEFAULT_OPENAL_DRIVER, CVAR_ARCHIVE );
|
||||
al_device = Cvar_Get( "al_device", "", CVAR_ARCHIVE );
|
||||
al_driver = Cvar_Get("al_driver", DEFAULT_OPENAL_DRIVER, CVAR_ARCHIVE);
|
||||
al_device = Cvar_Get("al_device", "", CVAR_ARCHIVE);
|
||||
|
||||
Com_Printf("LoadLibrary(%s)\n", al_driver->string);
|
||||
|
||||
/* Load the library */
|
||||
handle = LoadLibrary( al_driver->string );
|
||||
Sys_LoadLibrary(al_driver->string, NULL, &handle);
|
||||
|
||||
if (!handle)
|
||||
{
|
||||
|
@ -351,106 +348,106 @@ QAL_Init()
|
|||
}
|
||||
|
||||
/* Connect function pointers to management functions */
|
||||
qalcCreateContext = GPA("alcCreateContext");
|
||||
qalcMakeContextCurrent = GPA("alcMakeContextCurrent");
|
||||
qalcProcessContext = GPA("alcProcessContext");
|
||||
qalcSuspendContext = GPA("alcSuspendContext");
|
||||
qalcDestroyContext = GPA("alcDestroyContext");
|
||||
qalcGetCurrentContext = GPA("alcGetCurrentContext");
|
||||
qalcGetContextsDevice = GPA("alcGetContextsDevice");
|
||||
qalcOpenDevice = GPA("alcOpenDevice");
|
||||
qalcCloseDevice = GPA("alcCloseDevice");
|
||||
qalcGetError = GPA("alcGetError");
|
||||
qalcIsExtensionPresent = GPA("alcIsExtensionPresent");
|
||||
qalcGetProcAddress = GPA("alcGetProcAddress");
|
||||
qalcGetEnumValue = GPA("alcGetEnumValue");
|
||||
qalcGetString = GPA("alcGetString");
|
||||
qalcGetIntegerv = GPA("alcGetIntegerv");
|
||||
qalcCaptureOpenDevice = GPA("alcCaptureOpenDevice");
|
||||
qalcCaptureCloseDevice = GPA("alcCaptureCloseDevice");
|
||||
qalcCaptureStart = GPA("alcCaptureStart");
|
||||
qalcCaptureStop = GPA("alcCaptureStop");
|
||||
qalcCaptureSamples = GPA("alcCaptureSamples");
|
||||
qalcCreateContext = Sys_GetProcAddress(handle, "alcCreateContext");
|
||||
qalcMakeContextCurrent = Sys_GetProcAddress(handle, "alcMakeContextCurrent");
|
||||
qalcProcessContext = Sys_GetProcAddress(handle, "alcProcessContext");
|
||||
qalcSuspendContext = Sys_GetProcAddress(handle, "alcSuspendContext");
|
||||
qalcDestroyContext = Sys_GetProcAddress(handle, "alcDestroyContext");
|
||||
qalcGetCurrentContext = Sys_GetProcAddress(handle, "alcGetCurrentContext");
|
||||
qalcGetContextsDevice = Sys_GetProcAddress(handle, "alcGetContextsDevice");
|
||||
qalcOpenDevice = Sys_GetProcAddress(handle, "alcOpenDevice");
|
||||
qalcCloseDevice = Sys_GetProcAddress(handle, "alcCloseDevice");
|
||||
qalcGetError = Sys_GetProcAddress(handle, "alcGetError");
|
||||
qalcIsExtensionPresent = Sys_GetProcAddress(handle, "alcIsExtensionPresent");
|
||||
qalcGetProcAddress = Sys_GetProcAddress(handle, "alcGetProcAddress");
|
||||
qalcGetEnumValue = Sys_GetProcAddress(handle, "alcGetEnumValue");
|
||||
qalcGetString = Sys_GetProcAddress(handle, "alcGetString");
|
||||
qalcGetIntegerv = Sys_GetProcAddress(handle, "alcGetIntegerv");
|
||||
qalcCaptureOpenDevice = Sys_GetProcAddress(handle, "alcCaptureOpenDevice");
|
||||
qalcCaptureCloseDevice = Sys_GetProcAddress(handle, "alcCaptureCloseDevice");
|
||||
qalcCaptureStart = Sys_GetProcAddress(handle, "alcCaptureStart");
|
||||
qalcCaptureStop = Sys_GetProcAddress(handle, "alcCaptureStop");
|
||||
qalcCaptureSamples = Sys_GetProcAddress(handle, "alcCaptureSamples");
|
||||
|
||||
/* Connect function pointers to
|
||||
to OpenAL API functions */
|
||||
qalEnable = GPA("alEnable");
|
||||
qalDisable = GPA("alDisable");
|
||||
qalIsEnabled = GPA("alIsEnabled");
|
||||
qalGetString = GPA("alGetString");
|
||||
qalGetBooleanv = GPA("alGetBooleanv");
|
||||
qalGetIntegerv = GPA("alGetIntegerv");
|
||||
qalGetFloatv = GPA("alGetFloatv");
|
||||
qalGetDoublev = GPA("alGetDoublev");
|
||||
qalGetBoolean = GPA("alGetBoolean");
|
||||
qalGetInteger = GPA("alGetInteger");
|
||||
qalGetFloat = GPA("alGetFloat");
|
||||
qalGetDouble = GPA("alGetDouble");
|
||||
qalGetError = GPA("alGetError");
|
||||
qalIsExtensionPresent = GPA("alIsExtensionPresent");
|
||||
qalGetProcAddress = GPA("alGetProcAddress");
|
||||
qalGetEnumValue = GPA("alGetEnumValue");
|
||||
qalListenerf = GPA("alListenerf");
|
||||
qalListener3f = GPA("alListener3f");
|
||||
qalListenerfv = GPA("alListenerfv");
|
||||
qalListeneri = GPA("alListeneri");
|
||||
qalListener3i = GPA("alListener3i");
|
||||
qalListeneriv = GPA("alListeneriv");
|
||||
qalGetListenerf = GPA("alGetListenerf");
|
||||
qalGetListener3f = GPA("alGetListener3f");
|
||||
qalGetListenerfv = GPA("alGetListenerfv");
|
||||
qalGetListeneri = GPA("alGetListeneri");
|
||||
qalGetListener3i = GPA("alGetListener3i");
|
||||
qalGetListeneriv = GPA("alGetListeneriv");
|
||||
qalGenSources = GPA("alGenSources");
|
||||
qalDeleteSources = GPA("alDeleteSources");
|
||||
qalIsSource = GPA("alIsSource");
|
||||
qalSourcef = GPA("alSourcef");
|
||||
qalSource3f = GPA("alSource3f");
|
||||
qalSourcefv = GPA("alSourcefv");
|
||||
qalSourcei = GPA("alSourcei");
|
||||
qalSource3i = GPA("alSource3i");
|
||||
qalSourceiv = GPA("alSourceiv");
|
||||
qalGetSourcef = GPA("alGetSourcef");
|
||||
qalGetSource3f = GPA("alGetSource3f");
|
||||
qalGetSourcefv = GPA("alGetSourcefv");
|
||||
qalGetSourcei = GPA("alGetSourcei");
|
||||
qalGetSource3i = GPA("alGetSource3i");
|
||||
qalGetSourceiv = GPA("alGetSourceiv");
|
||||
qalSourcePlayv = GPA("alSourcePlayv");
|
||||
qalSourceStopv = GPA("alSourceStopv");
|
||||
qalSourceRewindv = GPA("alSourceRewindv");
|
||||
qalSourcePausev = GPA("alSourcePausev");
|
||||
qalSourcePlay = GPA("alSourcePlay");
|
||||
qalSourceStop = GPA("alSourceStop");
|
||||
qalSourceRewind = GPA("alSourceRewind");
|
||||
qalSourcePause = GPA("alSourcePause");
|
||||
qalSourceQueueBuffers = GPA("alSourceQueueBuffers");
|
||||
qalSourceUnqueueBuffers = GPA("alSourceUnqueueBuffers");
|
||||
qalGenBuffers = GPA("alGenBuffers");
|
||||
qalDeleteBuffers = GPA("alDeleteBuffers");
|
||||
qalIsBuffer = GPA("alIsBuffer");
|
||||
qalBufferData = GPA("alBufferData");
|
||||
qalBufferf = GPA("alBufferf");
|
||||
qalBuffer3f = GPA("alBuffer3f");
|
||||
qalBufferfv = GPA("alBufferfv");
|
||||
qalBufferi = GPA("alBufferi");
|
||||
qalBuffer3i = GPA("alBuffer3i");
|
||||
qalBufferiv = GPA("alBufferiv");
|
||||
qalGetBufferf = GPA("alGetBufferf");
|
||||
qalGetBuffer3f = GPA("alGetBuffer3f");
|
||||
qalGetBufferfv = GPA("alGetBufferfv");
|
||||
qalGetBufferi = GPA("alGetBufferi");
|
||||
qalGetBuffer3i = GPA("alGetBuffer3i");
|
||||
qalGetBufferiv = GPA("alGetBufferiv");
|
||||
qalDopplerFactor = GPA("alDopplerFactor");
|
||||
qalDopplerVelocity = GPA("alDopplerVelocity");
|
||||
qalSpeedOfSound = GPA("alSpeedOfSound");
|
||||
qalDistanceModel = GPA("alDistanceModel");
|
||||
qalGenFilters = GPA("alGenFilters");
|
||||
qalFilteri = GPA("alFilteri");
|
||||
qalFilterf = GPA("alFilterf");
|
||||
qalDeleteFilters = GPA("alDeleteFilters");
|
||||
qalEnable = Sys_GetProcAddress(handle, "alEnable");
|
||||
qalDisable = Sys_GetProcAddress(handle, "alDisable");
|
||||
qalIsEnabled = Sys_GetProcAddress(handle, "alIsEnabled");
|
||||
qalGetString = Sys_GetProcAddress(handle, "alGetString");
|
||||
qalGetBooleanv = Sys_GetProcAddress(handle, "alGetBooleanv");
|
||||
qalGetIntegerv = Sys_GetProcAddress(handle, "alGetIntegerv");
|
||||
qalGetFloatv = Sys_GetProcAddress(handle, "alGetFloatv");
|
||||
qalGetDoublev = Sys_GetProcAddress(handle, "alGetDoublev");
|
||||
qalGetBoolean = Sys_GetProcAddress(handle, "alGetBoolean");
|
||||
qalGetInteger = Sys_GetProcAddress(handle, "alGetInteger");
|
||||
qalGetFloat = Sys_GetProcAddress(handle, "alGetFloat");
|
||||
qalGetDouble = Sys_GetProcAddress(handle, "alGetDouble");
|
||||
qalGetError = Sys_GetProcAddress(handle, "alGetError");
|
||||
qalIsExtensionPresent = Sys_GetProcAddress(handle, "alIsExtensionPresent");
|
||||
qalGetProcAddress = Sys_GetProcAddress(handle, "alGetProcAddress");
|
||||
qalGetEnumValue = Sys_GetProcAddress(handle, "alGetEnumValue");
|
||||
qalListenerf = Sys_GetProcAddress(handle, "alListenerf");
|
||||
qalListener3f = Sys_GetProcAddress(handle, "alListener3f");
|
||||
qalListenerfv = Sys_GetProcAddress(handle, "alListenerfv");
|
||||
qalListeneri = Sys_GetProcAddress(handle, "alListeneri");
|
||||
qalListener3i = Sys_GetProcAddress(handle, "alListener3i");
|
||||
qalListeneriv = Sys_GetProcAddress(handle, "alListeneriv");
|
||||
qalGetListenerf = Sys_GetProcAddress(handle, "alGetListenerf");
|
||||
qalGetListener3f = Sys_GetProcAddress(handle, "alGetListener3f");
|
||||
qalGetListenerfv = Sys_GetProcAddress(handle, "alGetListenerfv");
|
||||
qalGetListeneri = Sys_GetProcAddress(handle, "alGetListeneri");
|
||||
qalGetListener3i = Sys_GetProcAddress(handle, "alGetListener3i");
|
||||
qalGetListeneriv = Sys_GetProcAddress(handle, "alGetListeneriv");
|
||||
qalGenSources = Sys_GetProcAddress(handle, "alGenSources");
|
||||
qalDeleteSources = Sys_GetProcAddress(handle, "alDeleteSources");
|
||||
qalIsSource = Sys_GetProcAddress(handle, "alIsSource");
|
||||
qalSourcef = Sys_GetProcAddress(handle, "alSourcef");
|
||||
qalSource3f = Sys_GetProcAddress(handle, "alSource3f");
|
||||
qalSourcefv = Sys_GetProcAddress(handle, "alSourcefv");
|
||||
qalSourcei = Sys_GetProcAddress(handle, "alSourcei");
|
||||
qalSource3i = Sys_GetProcAddress(handle, "alSource3i");
|
||||
qalSourceiv = Sys_GetProcAddress(handle, "alSourceiv");
|
||||
qalGetSourcef = Sys_GetProcAddress(handle, "alGetSourcef");
|
||||
qalGetSource3f = Sys_GetProcAddress(handle, "alGetSource3f");
|
||||
qalGetSourcefv = Sys_GetProcAddress(handle, "alGetSourcefv");
|
||||
qalGetSourcei = Sys_GetProcAddress(handle, "alGetSourcei");
|
||||
qalGetSource3i = Sys_GetProcAddress(handle, "alGetSource3i");
|
||||
qalGetSourceiv = Sys_GetProcAddress(handle, "alGetSourceiv");
|
||||
qalSourcePlayv = Sys_GetProcAddress(handle, "alSourcePlayv");
|
||||
qalSourceStopv = Sys_GetProcAddress(handle, "alSourceStopv");
|
||||
qalSourceRewindv = Sys_GetProcAddress(handle, "alSourceRewindv");
|
||||
qalSourcePausev = Sys_GetProcAddress(handle, "alSourcePausev");
|
||||
qalSourcePlay = Sys_GetProcAddress(handle, "alSourcePlay");
|
||||
qalSourceStop = Sys_GetProcAddress(handle, "alSourceStop");
|
||||
qalSourceRewind = Sys_GetProcAddress(handle, "alSourceRewind");
|
||||
qalSourcePause = Sys_GetProcAddress(handle, "alSourcePause");
|
||||
qalSourceQueueBuffers = Sys_GetProcAddress(handle, "alSourceQueueBuffers");
|
||||
qalSourceUnqueueBuffers = Sys_GetProcAddress(handle, "alSourceUnqueueBuffers");
|
||||
qalGenBuffers = Sys_GetProcAddress(handle, "alGenBuffers");
|
||||
qalDeleteBuffers = Sys_GetProcAddress(handle, "alDeleteBuffers");
|
||||
qalIsBuffer = Sys_GetProcAddress(handle, "alIsBuffer");
|
||||
qalBufferData = Sys_GetProcAddress(handle, "alBufferData");
|
||||
qalBufferf = Sys_GetProcAddress(handle, "alBufferf");
|
||||
qalBuffer3f = Sys_GetProcAddress(handle, "alBuffer3f");
|
||||
qalBufferfv = Sys_GetProcAddress(handle, "alBufferfv");
|
||||
qalBufferi = Sys_GetProcAddress(handle, "alBufferi");
|
||||
qalBuffer3i = Sys_GetProcAddress(handle, "alBuffer3i");
|
||||
qalBufferiv = Sys_GetProcAddress(handle, "alBufferiv");
|
||||
qalGetBufferf = Sys_GetProcAddress(handle, "alGetBufferf");
|
||||
qalGetBuffer3f = Sys_GetProcAddress(handle, "alGetBuffer3f");
|
||||
qalGetBufferfv = Sys_GetProcAddress(handle, "alGetBufferfv");
|
||||
qalGetBufferi = Sys_GetProcAddress(handle, "alGetBufferi");
|
||||
qalGetBuffer3i = Sys_GetProcAddress(handle, "alGetBuffer3i");
|
||||
qalGetBufferiv = Sys_GetProcAddress(handle, "alGetBufferiv");
|
||||
qalDopplerFactor = Sys_GetProcAddress(handle, "alDopplerFactor");
|
||||
qalDopplerVelocity = Sys_GetProcAddress(handle, "alDopplerVelocity");
|
||||
qalSpeedOfSound = Sys_GetProcAddress(handle, "alSpeedOfSound");
|
||||
qalDistanceModel = Sys_GetProcAddress(handle, "alDistanceModel");
|
||||
qalGenFilters = Sys_GetProcAddress(handle, "alGenFilters");
|
||||
qalFilteri = Sys_GetProcAddress(handle, "alFilteri");
|
||||
qalFilterf = Sys_GetProcAddress(handle, "alFilterf");
|
||||
qalDeleteFilters = Sys_GetProcAddress(handle, "alDeleteFilters");
|
||||
|
||||
/* Open the OpenAL device */
|
||||
Com_Printf("...opening OpenAL device:");
|
|
@ -1,501 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2012 Yamagi Burmeister
|
||||
* Copyright (C) 2010 skuller.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
* USA.
|
||||
*
|
||||
* =======================================================================
|
||||
*
|
||||
* Low level, platform depended "qal" API implementation. This files
|
||||
* provides functions to load, initialize, shutdown und unload the
|
||||
* OpenAL library and connects the "qal" funtion pointers to the
|
||||
* OpenAL functions. This source file was taken from Q2Pro and
|
||||
* modified by the YQ2 authors.
|
||||
*
|
||||
* =======================================================================
|
||||
*/
|
||||
|
||||
#ifdef USE_OPENAL
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <AL/al.h>
|
||||
#include <AL/alc.h>
|
||||
#include <AL/alext.h>
|
||||
|
||||
#include "../../common/header/common.h"
|
||||
#include "header/qal.h"
|
||||
|
||||
static ALCcontext *context;
|
||||
static ALCdevice *device;
|
||||
static cvar_t *al_device;
|
||||
static cvar_t *al_driver;
|
||||
static void *handle;
|
||||
|
||||
/* Function pointers for OpenAL management */
|
||||
static LPALCCREATECONTEXT qalcCreateContext;
|
||||
static LPALCMAKECONTEXTCURRENT qalcMakeContextCurrent;
|
||||
static LPALCPROCESSCONTEXT qalcProcessContext;
|
||||
static LPALCSUSPENDCONTEXT qalcSuspendContext;
|
||||
static LPALCDESTROYCONTEXT qalcDestroyContext;
|
||||
static LPALCGETCURRENTCONTEXT qalcGetCurrentContext;
|
||||
static LPALCGETCONTEXTSDEVICE qalcGetContextsDevice;
|
||||
static LPALCOPENDEVICE qalcOpenDevice;
|
||||
static LPALCCLOSEDEVICE qalcCloseDevice;
|
||||
static LPALCGETERROR qalcGetError;
|
||||
static LPALCISEXTENSIONPRESENT qalcIsExtensionPresent;
|
||||
static LPALCGETPROCADDRESS qalcGetProcAddress;
|
||||
static LPALCGETENUMVALUE qalcGetEnumValue;
|
||||
static LPALCGETSTRING qalcGetString;
|
||||
static LPALCGETINTEGERV qalcGetIntegerv;
|
||||
static LPALCCAPTUREOPENDEVICE qalcCaptureOpenDevice;
|
||||
static LPALCCAPTURECLOSEDEVICE qalcCaptureCloseDevice;
|
||||
static LPALCCAPTURESTART qalcCaptureStart;
|
||||
static LPALCCAPTURESTOP qalcCaptureStop;
|
||||
static LPALCCAPTURESAMPLES qalcCaptureSamples ;
|
||||
|
||||
/* Declaration of function pointers used
|
||||
to connect OpenAL to our internal API */
|
||||
LPALENABLE qalEnable;
|
||||
LPALDISABLE qalDisable;
|
||||
LPALISENABLED qalIsEnabled;
|
||||
LPALGETSTRING qalGetString;
|
||||
LPALGETBOOLEANV qalGetBooleanv;
|
||||
LPALGETINTEGERV qalGetIntegerv;
|
||||
LPALGETFLOATV qalGetFloatv;
|
||||
LPALGETDOUBLEV qalGetDoublev;
|
||||
LPALGETBOOLEAN qalGetBoolean;
|
||||
LPALGETINTEGER qalGetInteger;
|
||||
LPALGETFLOAT qalGetFloat;
|
||||
LPALGETDOUBLE qalGetDouble;
|
||||
LPALGETERROR qalGetError;
|
||||
LPALISEXTENSIONPRESENT qalIsExtensionPresent;
|
||||
LPALGETPROCADDRESS qalGetProcAddress;
|
||||
LPALGETENUMVALUE qalGetEnumValue;
|
||||
LPALLISTENERF qalListenerf;
|
||||
LPALLISTENER3F qalListener3f;
|
||||
LPALLISTENERFV qalListenerfv;
|
||||
LPALLISTENERI qalListeneri;
|
||||
LPALLISTENER3I qalListener3i;
|
||||
LPALLISTENERIV qalListeneriv;
|
||||
LPALGETLISTENERF qalGetListenerf;
|
||||
LPALGETLISTENER3F qalGetListener3f;
|
||||
LPALGETLISTENERFV qalGetListenerfv;
|
||||
LPALGETLISTENERI qalGetListeneri;
|
||||
LPALGETLISTENER3I qalGetListener3i;
|
||||
LPALGETLISTENERIV qalGetListeneriv;
|
||||
LPALGENSOURCES qalGenSources;
|
||||
LPALDELETESOURCES qalDeleteSources;
|
||||
LPALISSOURCE qalIsSource;
|
||||
LPALSOURCEF qalSourcef;
|
||||
LPALSOURCE3F qalSource3f;
|
||||
LPALSOURCEFV qalSourcefv;
|
||||
LPALSOURCEI qalSourcei;
|
||||
LPALSOURCE3I qalSource3i;
|
||||
LPALSOURCEIV qalSourceiv;
|
||||
LPALGETSOURCEF qalGetSourcef;
|
||||
LPALGETSOURCE3F qalGetSource3f;
|
||||
LPALGETSOURCEFV qalGetSourcefv;
|
||||
LPALGETSOURCEI qalGetSourcei;
|
||||
LPALGETSOURCE3I qalGetSource3i;
|
||||
LPALGETSOURCEIV qalGetSourceiv;
|
||||
LPALSOURCEPLAYV qalSourcePlayv;
|
||||
LPALSOURCESTOPV qalSourceStopv;
|
||||
LPALSOURCEREWINDV qalSourceRewindv;
|
||||
LPALSOURCEPAUSEV qalSourcePausev;
|
||||
LPALSOURCEPLAY qalSourcePlay;
|
||||
LPALSOURCESTOP qalSourceStop;
|
||||
LPALSOURCEREWIND qalSourceRewind;
|
||||
LPALSOURCEPAUSE qalSourcePause;
|
||||
LPALSOURCEQUEUEBUFFERS qalSourceQueueBuffers;
|
||||
LPALSOURCEUNQUEUEBUFFERS qalSourceUnqueueBuffers;
|
||||
LPALGENBUFFERS qalGenBuffers;
|
||||
LPALDELETEBUFFERS qalDeleteBuffers;
|
||||
LPALISBUFFER qalIsBuffer;
|
||||
LPALBUFFERDATA qalBufferData;
|
||||
LPALBUFFERF qalBufferf;
|
||||
LPALBUFFER3F qalBuffer3f;
|
||||
LPALBUFFERFV qalBufferfv;
|
||||
LPALBUFFERI qalBufferi;
|
||||
LPALBUFFER3I qalBuffer3i;
|
||||
LPALBUFFERIV qalBufferiv;
|
||||
LPALGETBUFFERF qalGetBufferf;
|
||||
LPALGETBUFFER3F qalGetBuffer3f;
|
||||
LPALGETBUFFERFV qalGetBufferfv;
|
||||
LPALGETBUFFERI qalGetBufferi;
|
||||
LPALGETBUFFER3I qalGetBuffer3i;
|
||||
LPALGETBUFFERIV qalGetBufferiv;
|
||||
LPALDOPPLERFACTOR qalDopplerFactor;
|
||||
LPALDOPPLERVELOCITY qalDopplerVelocity;
|
||||
LPALSPEEDOFSOUND qalSpeedOfSound;
|
||||
LPALDISTANCEMODEL qalDistanceModel;
|
||||
LPALGENFILTERS qalGenFilters;
|
||||
LPALFILTERI qalFilteri;
|
||||
LPALFILTERF qalFilterf;
|
||||
LPALDELETEFILTERS qalDeleteFilters;
|
||||
|
||||
/*
|
||||
* Gives information over the OpenAL
|
||||
* implementation and it's state
|
||||
*/
|
||||
void QAL_SoundInfo()
|
||||
{
|
||||
Com_Printf("OpenAL settings:\n");
|
||||
Com_Printf("AL_VENDOR: %s\n", qalGetString(AL_VENDOR));
|
||||
Com_Printf("AL_RENDERER: %s\n", qalGetString(AL_RENDERER));
|
||||
Com_Printf("AL_VERSION: %s\n", qalGetString(AL_VERSION));
|
||||
Com_Printf("AL_EXTENSIONS: %s\n", qalGetString(AL_EXTENSIONS));
|
||||
|
||||
if (qalcIsExtensionPresent(NULL, "ALC_ENUMERATE_ALL_EXT"))
|
||||
{
|
||||
const char *devs = qalcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER);
|
||||
|
||||
Com_Printf("\nAvailable OpenAL devices:\n");
|
||||
|
||||
if (devs == NULL)
|
||||
{
|
||||
Com_Printf("- No devices found. Depending on your\n");
|
||||
Com_Printf(" platform this may be expected and\n");
|
||||
Com_Printf(" doesn't indicate a problem!\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
while (devs && *devs)
|
||||
{
|
||||
Com_Printf("- %s\n", devs);
|
||||
devs += strlen(devs) + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (qalcIsExtensionPresent(NULL, "ALC_ENUMERATE_ALL_EXT"))
|
||||
{
|
||||
const char *devs = qalcGetString(device, ALC_DEVICE_SPECIFIER);
|
||||
|
||||
Com_Printf("\nCurrent OpenAL device:\n");
|
||||
|
||||
if (devs == NULL)
|
||||
{
|
||||
Com_Printf("- No OpenAL device in use\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
Com_Printf("- %s\n", devs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Shuts OpenAL down, frees all context and
|
||||
* device handles and unloads the shared lib.
|
||||
*/
|
||||
void
|
||||
QAL_Shutdown()
|
||||
{
|
||||
if (context)
|
||||
{
|
||||
qalcMakeContextCurrent( NULL );
|
||||
qalcDestroyContext( context );
|
||||
context = NULL;
|
||||
}
|
||||
|
||||
if (device)
|
||||
{
|
||||
qalcCloseDevice( device );
|
||||
device = NULL;
|
||||
}
|
||||
|
||||
/* Disconnect function pointers used
|
||||
for OpenAL management calls */
|
||||
qalcCreateContext = NULL;
|
||||
qalcMakeContextCurrent = NULL;
|
||||
qalcProcessContext = NULL;
|
||||
qalcSuspendContext = NULL;
|
||||
qalcDestroyContext = NULL;
|
||||
qalcGetCurrentContext = NULL;
|
||||
qalcGetContextsDevice = NULL;
|
||||
qalcOpenDevice = NULL;
|
||||
qalcCloseDevice = NULL;
|
||||
qalcGetError = NULL;
|
||||
qalcIsExtensionPresent = NULL;
|
||||
qalcGetProcAddress = NULL;
|
||||
qalcGetEnumValue = NULL;
|
||||
qalcGetString = NULL;
|
||||
qalcGetIntegerv = NULL;
|
||||
qalcCaptureOpenDevice = NULL;
|
||||
qalcCaptureCloseDevice = NULL;
|
||||
qalcCaptureStart = NULL;
|
||||
qalcCaptureStop = NULL;
|
||||
qalcCaptureSamples = NULL;
|
||||
|
||||
/* Disconnect OpenAL
|
||||
* function pointers */
|
||||
qalEnable = NULL;
|
||||
qalDisable = NULL;
|
||||
qalIsEnabled = NULL;
|
||||
qalGetString = NULL;
|
||||
qalGetBooleanv = NULL;
|
||||
qalGetIntegerv = NULL;
|
||||
qalGetFloatv = NULL;
|
||||
qalGetDoublev = NULL;
|
||||
qalGetBoolean = NULL;
|
||||
qalGetInteger = NULL;
|
||||
qalGetFloat = NULL;
|
||||
qalGetDouble = NULL;
|
||||
qalGetError = NULL;
|
||||
qalIsExtensionPresent = NULL;
|
||||
qalGetProcAddress = NULL;
|
||||
qalGetEnumValue = NULL;
|
||||
qalListenerf = NULL;
|
||||
qalListener3f = NULL;
|
||||
qalListenerfv = NULL;
|
||||
qalListeneri = NULL;
|
||||
qalListener3i = NULL;
|
||||
qalListeneriv = NULL;
|
||||
qalGetListenerf = NULL;
|
||||
qalGetListener3f = NULL;
|
||||
qalGetListenerfv = NULL;
|
||||
qalGetListeneri = NULL;
|
||||
qalGetListener3i = NULL;
|
||||
qalGetListeneriv = NULL;
|
||||
qalGenSources = NULL;
|
||||
qalDeleteSources = NULL;
|
||||
qalIsSource = NULL;
|
||||
qalSourcef = NULL;
|
||||
qalSource3f = NULL;
|
||||
qalSourcefv = NULL;
|
||||
qalSourcei = NULL;
|
||||
qalSource3i = NULL;
|
||||
qalSourceiv = NULL;
|
||||
qalGetSourcef = NULL;
|
||||
qalGetSource3f = NULL;
|
||||
qalGetSourcefv = NULL;
|
||||
qalGetSourcei = NULL;
|
||||
qalGetSource3i = NULL;
|
||||
qalGetSourceiv = NULL;
|
||||
qalSourcePlayv = NULL;
|
||||
qalSourceStopv = NULL;
|
||||
qalSourceRewindv = NULL;
|
||||
qalSourcePausev = NULL;
|
||||
qalSourcePlay = NULL;
|
||||
qalSourceStop = NULL;
|
||||
qalSourceRewind = NULL;
|
||||
qalSourcePause = NULL;
|
||||
qalSourceQueueBuffers = NULL;
|
||||
qalSourceUnqueueBuffers = NULL;
|
||||
qalGenBuffers = NULL;
|
||||
qalDeleteBuffers = NULL;
|
||||
qalIsBuffer = NULL;
|
||||
qalBufferData = NULL;
|
||||
qalBufferf = NULL;
|
||||
qalBuffer3f = NULL;
|
||||
qalBufferfv = NULL;
|
||||
qalBufferi = NULL;
|
||||
qalBuffer3i = NULL;
|
||||
qalBufferiv = NULL;
|
||||
qalGetBufferf = NULL;
|
||||
qalGetBuffer3f = NULL;
|
||||
qalGetBufferfv = NULL;
|
||||
qalGetBufferi = NULL;
|
||||
qalGetBuffer3i = NULL;
|
||||
qalGetBufferiv = NULL;
|
||||
qalDopplerFactor = NULL;
|
||||
qalDopplerVelocity = NULL;
|
||||
qalSpeedOfSound = NULL;
|
||||
qalDistanceModel = NULL;
|
||||
qalGenFilters = NULL;
|
||||
qalFilteri = NULL;
|
||||
qalFilterf = NULL;
|
||||
qalDeleteFilters = NULL;
|
||||
|
||||
/* Unload the shared lib */
|
||||
dlclose(handle);
|
||||
handle = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Loads the OpenAL shared lib, creates
|
||||
* a context and device handle.
|
||||
*/
|
||||
qboolean
|
||||
QAL_Init()
|
||||
{
|
||||
/* DEFAULT_OPENAL_DRIVER is defined at compile time via the compiler */
|
||||
al_driver = Cvar_Get( "al_driver", DEFAULT_OPENAL_DRIVER, CVAR_ARCHIVE );
|
||||
al_device = Cvar_Get( "al_device", "", CVAR_ARCHIVE );
|
||||
|
||||
Com_Printf("LoadLibrary(%s)\n", al_driver->string);
|
||||
|
||||
/* Load the library */
|
||||
handle = dlopen( al_driver->string, RTLD_LAZY );
|
||||
|
||||
if (!handle)
|
||||
{
|
||||
Com_Printf("Loading %s failed! Disabling OpenAL.\n", al_driver->string);
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Connect function pointers to management functions */
|
||||
qalcCreateContext = dlsym(handle, "alcCreateContext");
|
||||
qalcMakeContextCurrent = dlsym(handle, "alcMakeContextCurrent");
|
||||
qalcProcessContext = dlsym(handle, "alcProcessContext");
|
||||
qalcSuspendContext = dlsym(handle, "alcSuspendContext");
|
||||
qalcDestroyContext = dlsym(handle, "alcDestroyContext");
|
||||
qalcGetCurrentContext = dlsym(handle, "alcGetCurrentContext");
|
||||
qalcGetContextsDevice = dlsym(handle, "alcGetContextsDevice");
|
||||
qalcOpenDevice = dlsym(handle, "alcOpenDevice");
|
||||
qalcCloseDevice = dlsym(handle, "alcCloseDevice");
|
||||
qalcGetError = dlsym(handle, "alcGetError");
|
||||
qalcIsExtensionPresent = dlsym(handle, "alcIsExtensionPresent");
|
||||
qalcGetProcAddress = dlsym(handle, "alcGetProcAddress");
|
||||
qalcGetEnumValue = dlsym(handle, "alcGetEnumValue");
|
||||
qalcGetString = dlsym(handle, "alcGetString");
|
||||
qalcGetIntegerv = dlsym(handle, "alcGetIntegerv");
|
||||
qalcCaptureOpenDevice = dlsym(handle, "alcCaptureOpenDevice");
|
||||
qalcCaptureCloseDevice = dlsym(handle, "alcCaptureCloseDevice");
|
||||
qalcCaptureStart = dlsym(handle, "alcCaptureStart");
|
||||
qalcCaptureStop = dlsym(handle, "alcCaptureStop");
|
||||
qalcCaptureSamples = dlsym(handle, "alcCaptureSamples");
|
||||
|
||||
/* Connect function pointers to
|
||||
to OpenAL API functions */
|
||||
qalEnable = dlsym(handle, "alEnable");
|
||||
qalDisable = dlsym(handle, "alDisable");
|
||||
qalIsEnabled = dlsym(handle, "alIsEnabled");
|
||||
qalGetString = dlsym(handle, "alGetString");
|
||||
qalGetBooleanv = dlsym(handle, "alGetBooleanv");
|
||||
qalGetIntegerv = dlsym(handle, "alGetIntegerv");
|
||||
qalGetFloatv = dlsym(handle, "alGetFloatv");
|
||||
qalGetDoublev = dlsym(handle, "alGetDoublev");
|
||||
qalGetBoolean = dlsym(handle, "alGetBoolean");
|
||||
qalGetInteger = dlsym(handle, "alGetInteger");
|
||||
qalGetFloat = dlsym(handle, "alGetFloat");
|
||||
qalGetDouble = dlsym(handle, "alGetDouble");
|
||||
qalGetError = dlsym(handle, "alGetError");
|
||||
qalIsExtensionPresent = dlsym(handle, "alIsExtensionPresent");
|
||||
qalGetProcAddress = dlsym(handle, "alGetProcAddress");
|
||||
qalGetEnumValue = dlsym(handle, "alGetEnumValue");
|
||||
qalListenerf = dlsym(handle, "alListenerf");
|
||||
qalListener3f = dlsym(handle, "alListener3f");
|
||||
qalListenerfv = dlsym(handle, "alListenerfv");
|
||||
qalListeneri = dlsym(handle, "alListeneri");
|
||||
qalListener3i = dlsym(handle, "alListener3i");
|
||||
qalListeneriv = dlsym(handle, "alListeneriv");
|
||||
qalGetListenerf = dlsym(handle, "alGetListenerf");
|
||||
qalGetListener3f = dlsym(handle, "alGetListener3f");
|
||||
qalGetListenerfv = dlsym(handle, "alGetListenerfv");
|
||||
qalGetListeneri = dlsym(handle, "alGetListeneri");
|
||||
qalGetListener3i = dlsym(handle, "alGetListener3i");
|
||||
qalGetListeneriv = dlsym(handle, "alGetListeneriv");
|
||||
qalGenSources = dlsym(handle, "alGenSources");
|
||||
qalDeleteSources = dlsym(handle, "alDeleteSources");
|
||||
qalIsSource = dlsym(handle, "alIsSource");
|
||||
qalSourcef = dlsym(handle, "alSourcef");
|
||||
qalSource3f = dlsym(handle, "alSource3f");
|
||||
qalSourcefv = dlsym(handle, "alSourcefv");
|
||||
qalSourcei = dlsym(handle, "alSourcei");
|
||||
qalSource3i = dlsym(handle, "alSource3i");
|
||||
qalSourceiv = dlsym(handle, "alSourceiv");
|
||||
qalGetSourcef = dlsym(handle, "alGetSourcef");
|
||||
qalGetSource3f = dlsym(handle, "alGetSource3f");
|
||||
qalGetSourcefv = dlsym(handle, "alGetSourcefv");
|
||||
qalGetSourcei = dlsym(handle, "alGetSourcei");
|
||||
qalGetSource3i = dlsym(handle, "alGetSource3i");
|
||||
qalGetSourceiv = dlsym(handle, "alGetSourceiv");
|
||||
qalSourcePlayv = dlsym(handle, "alSourcePlayv");
|
||||
qalSourceStopv = dlsym(handle, "alSourceStopv");
|
||||
qalSourceRewindv = dlsym(handle, "alSourceRewindv");
|
||||
qalSourcePausev = dlsym(handle, "alSourcePausev");
|
||||
qalSourcePlay = dlsym(handle, "alSourcePlay");
|
||||
qalSourceStop = dlsym(handle, "alSourceStop");
|
||||
qalSourceRewind = dlsym(handle, "alSourceRewind");
|
||||
qalSourcePause = dlsym(handle, "alSourcePause");
|
||||
qalSourceQueueBuffers = dlsym(handle, "alSourceQueueBuffers");
|
||||
qalSourceUnqueueBuffers = dlsym(handle, "alSourceUnqueueBuffers");
|
||||
qalGenBuffers = dlsym(handle, "alGenBuffers");
|
||||
qalDeleteBuffers = dlsym(handle, "alDeleteBuffers");
|
||||
qalIsBuffer = dlsym(handle, "alIsBuffer");
|
||||
qalBufferData = dlsym(handle, "alBufferData");
|
||||
qalBufferf = dlsym(handle, "alBufferf");
|
||||
qalBuffer3f = dlsym(handle, "alBuffer3f");
|
||||
qalBufferfv = dlsym(handle, "alBufferfv");
|
||||
qalBufferi = dlsym(handle, "alBufferi");
|
||||
qalBuffer3i = dlsym(handle, "alBuffer3i");
|
||||
qalBufferiv = dlsym(handle, "alBufferiv");
|
||||
qalGetBufferf = dlsym(handle, "alGetBufferf");
|
||||
qalGetBuffer3f = dlsym(handle, "alGetBuffer3f");
|
||||
qalGetBufferfv = dlsym(handle, "alGetBufferfv");
|
||||
qalGetBufferi = dlsym(handle, "alGetBufferi");
|
||||
qalGetBuffer3i = dlsym(handle, "alGetBuffer3i");
|
||||
qalGetBufferiv = dlsym(handle, "alGetBufferiv");
|
||||
qalDopplerFactor = dlsym(handle, "alDopplerFactor");
|
||||
qalDopplerVelocity = dlsym(handle, "alDopplerVelocity");
|
||||
qalSpeedOfSound = dlsym(handle, "alSpeedOfSound");
|
||||
qalDistanceModel = dlsym(handle, "alDistanceModel");
|
||||
qalGenFilters = dlsym(handle, "alGenFilters");
|
||||
qalFilteri = dlsym(handle, "alFilteri");
|
||||
qalFilterf = dlsym(handle, "alFilterf");
|
||||
qalDeleteFilters = dlsym(handle, "alDeleteFilters");
|
||||
|
||||
/* Open the OpenAL device */
|
||||
Com_Printf("...opening OpenAL device:");
|
||||
|
||||
device = qalcOpenDevice(al_device->string[0] ? al_device->string : NULL);
|
||||
|
||||
if(!device)
|
||||
{
|
||||
Com_DPrintf("failed\n");
|
||||
QAL_Shutdown();
|
||||
return false;
|
||||
}
|
||||
|
||||
Com_Printf("ok\n");
|
||||
|
||||
/* Create the OpenAL context */
|
||||
Com_Printf("...creating OpenAL context: ");
|
||||
|
||||
context = qalcCreateContext(device, NULL);
|
||||
|
||||
if(!context)
|
||||
{
|
||||
Com_DPrintf("failed\n");
|
||||
QAL_Shutdown();
|
||||
return false;
|
||||
}
|
||||
|
||||
Com_Printf("ok\n");
|
||||
|
||||
/* Set the created context as current context */
|
||||
Com_Printf("...making context current: ");
|
||||
|
||||
if (!qalcMakeContextCurrent(context))
|
||||
{
|
||||
Com_DPrintf("failed\n");
|
||||
QAL_Shutdown();
|
||||
return false;
|
||||
}
|
||||
|
||||
Com_Printf("ok\n");
|
||||
|
||||
/* Print OpenAL informations */
|
||||
Com_Printf("\n");
|
||||
QAL_SoundInfo();
|
||||
Com_Printf("\n");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif /* USE_OPENAL */
|
|
@ -495,3 +495,56 @@ Sys_GetHomeDir(void)
|
|||
return gdir;
|
||||
}
|
||||
|
||||
void *
|
||||
Sys_GetProcAddress(void *handle, const char *sym)
|
||||
{
|
||||
return dlsym(handle, sym);
|
||||
}
|
||||
|
||||
void *
|
||||
Sys_LoadLibrary(const char *path, const char *sym, void **handle)
|
||||
{
|
||||
void *module, *entry;
|
||||
|
||||
*handle = NULL;
|
||||
|
||||
module = dlopen(path, RTLD_LAZY);
|
||||
|
||||
if (!module)
|
||||
{
|
||||
Com_DPrintf("%s failed: %s\n", __func__, dlerror());
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (sym)
|
||||
{
|
||||
entry = dlsym(module, sym);
|
||||
|
||||
if (!entry)
|
||||
{
|
||||
Com_DPrintf("%s failed: %s\n", __func__, dlerror());
|
||||
dlclose(module);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
entry = NULL;
|
||||
}
|
||||
|
||||
Com_DPrintf("%s succeeded: %s\n", __func__, path);
|
||||
|
||||
*handle = module;
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
void
|
||||
Sys_FreeLibrary(void *handle)
|
||||
{
|
||||
if (handle && dlclose(handle))
|
||||
{
|
||||
Com_Error(ERR_FATAL, "dlclose failed on %p: %s", handle, dlerror());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,136 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2012 Yamagi Burmeister
|
||||
* Copyright (C) 2010 skuller.net
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or (at
|
||||
* your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
* See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||
* USA.
|
||||
*
|
||||
* =======================================================================
|
||||
*
|
||||
* Header file to the low level "qal" API implementation. This source file
|
||||
* was taken from Q2Pro and modified by the YQ2 authors.
|
||||
*
|
||||
* =======================================================================
|
||||
*/
|
||||
|
||||
#ifdef USE_OPENAL
|
||||
|
||||
#ifndef WIN_QAL_API_H_
|
||||
#define WIN_QAL_API_H_
|
||||
|
||||
#include <AL/al.h>
|
||||
#include <AL/efx.h>
|
||||
|
||||
/* Function pointers used to tie
|
||||
the qal API to the OpenAL API */
|
||||
extern LPALENABLE qalEnable;
|
||||
extern LPALDISABLE qalDisable;
|
||||
extern LPALISENABLED qalIsEnabled;
|
||||
extern LPALGETSTRING qalGetString;
|
||||
extern LPALGETBOOLEANV qalGetBooleanv;
|
||||
extern LPALGETINTEGERV qalGetIntegerv;
|
||||
extern LPALGETFLOATV qalGetFloatv;
|
||||
extern LPALGETDOUBLEV qalGetDoublev;
|
||||
extern LPALGETBOOLEAN qalGetBoolean;
|
||||
extern LPALGETINTEGER qalGetInteger;
|
||||
extern LPALGETFLOAT qalGetFloat;
|
||||
extern LPALGETDOUBLE qalGetDouble;
|
||||
extern LPALGETERROR qalGetError;
|
||||
extern LPALISEXTENSIONPRESENT qalIsExtensionPresent;
|
||||
extern LPALGETPROCADDRESS qalGetProcAddress;
|
||||
extern LPALGETENUMVALUE qalGetEnumValue;
|
||||
extern LPALLISTENERF qalListenerf;
|
||||
extern LPALLISTENER3F qalListener3f;
|
||||
extern LPALLISTENERFV qalListenerfv;
|
||||
extern LPALLISTENERI qalListeneri;
|
||||
extern LPALLISTENER3I qalListener3i;
|
||||
extern LPALLISTENERIV qalListeneriv;
|
||||
extern LPALGETLISTENERF qalGetListenerf;
|
||||
extern LPALGETLISTENER3F qalGetListener3f;
|
||||
extern LPALGETLISTENERFV qalGetListenerfv;
|
||||
extern LPALGETLISTENERI qalGetListeneri;
|
||||
extern LPALGETLISTENER3I qalGetListener3i;
|
||||
extern LPALGETLISTENERIV qalGetListeneriv;
|
||||
extern LPALGENSOURCES qalGenSources;
|
||||
extern LPALDELETESOURCES qalDeleteSources;
|
||||
extern LPALISSOURCE qalIsSource;
|
||||
extern LPALSOURCEF qalSourcef;
|
||||
extern LPALSOURCE3F qalSource3f;
|
||||
extern LPALSOURCEFV qalSourcefv;
|
||||
extern LPALSOURCEI qalSourcei;
|
||||
extern LPALSOURCE3I qalSource3i;
|
||||
extern LPALSOURCEIV qalSourceiv;
|
||||
extern LPALGETSOURCEF qalGetSourcef;
|
||||
extern LPALGETSOURCE3F qalGetSource3f;
|
||||
extern LPALGETSOURCEFV qalGetSourcefv;
|
||||
extern LPALGETSOURCEI qalGetSourcei;
|
||||
extern LPALGETSOURCE3I qalGetSource3i;
|
||||
extern LPALGETSOURCEIV qalGetSourceiv;
|
||||
extern LPALSOURCEPLAYV qalSourcePlayv;
|
||||
extern LPALSOURCESTOPV qalSourceStopv;
|
||||
extern LPALSOURCEREWINDV qalSourceRewindv;
|
||||
extern LPALSOURCEPAUSEV qalSourcePausev;
|
||||
extern LPALSOURCEPLAY qalSourcePlay;
|
||||
extern LPALSOURCESTOP qalSourceStop;
|
||||
extern LPALSOURCEREWIND qalSourceRewind;
|
||||
extern LPALSOURCEPAUSE qalSourcePause;
|
||||
extern LPALSOURCEQUEUEBUFFERS qalSourceQueueBuffers;
|
||||
extern LPALSOURCEUNQUEUEBUFFERS qalSourceUnqueueBuffers;
|
||||
extern LPALGENBUFFERS qalGenBuffers;
|
||||
extern LPALDELETEBUFFERS qalDeleteBuffers;
|
||||
extern LPALISBUFFER qalIsBuffer;
|
||||
extern LPALBUFFERDATA qalBufferData;
|
||||
extern LPALBUFFERF qalBufferf;
|
||||
extern LPALBUFFER3F qalBuffer3f;
|
||||
extern LPALBUFFERFV qalBufferfv;
|
||||
extern LPALBUFFERI qalBufferi;
|
||||
extern LPALBUFFER3I qalBuffer3i;
|
||||
extern LPALBUFFERIV qalBufferiv;
|
||||
extern LPALGETBUFFERF qalGetBufferf;
|
||||
extern LPALGETBUFFER3F qalGetBuffer3f;
|
||||
extern LPALGETBUFFERFV qalGetBufferfv;
|
||||
extern LPALGETBUFFERI qalGetBufferi;
|
||||
extern LPALGETBUFFER3I qalGetBuffer3i;
|
||||
extern LPALGETBUFFERIV qalGetBufferiv;
|
||||
extern LPALDOPPLERFACTOR qalDopplerFactor;
|
||||
extern LPALDOPPLERVELOCITY qalDopplerVelocity;
|
||||
extern LPALSPEEDOFSOUND qalSpeedOfSound;
|
||||
extern LPALDISTANCEMODEL qalDistanceModel;
|
||||
extern LPALGENFILTERS qalGenFilters;
|
||||
extern LPALFILTERI qalFilteri;
|
||||
extern LPALFILTERF qalFilterf;
|
||||
extern LPALDELETEFILTERS qalDeleteFilters;
|
||||
|
||||
/*
|
||||
* Gives information over the OpenAL
|
||||
* implementation and it's state
|
||||
*/
|
||||
void QAL_SoundInfo(void);
|
||||
|
||||
/*
|
||||
* Loads the OpenAL shared lib, creates
|
||||
* a context and device handle.
|
||||
*/
|
||||
qboolean QAL_Init(void);
|
||||
|
||||
/*
|
||||
* Shuts OpenAL down, frees all context and
|
||||
* device handles and unloads the shared lib.
|
||||
*/
|
||||
void QAL_Shutdown(void);
|
||||
|
||||
#endif /* WIN_QAL_API_H_ */
|
||||
#endif /* USE_OPENAL */
|
|
@ -791,3 +791,64 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
Sys_FreeLibrary(void *handle)
|
||||
{
|
||||
if (!handle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!FreeLibrary(handle))
|
||||
{
|
||||
Com_Error(ERR_FATAL, "FreeLibrary failed on %p", handle);
|
||||
}
|
||||
}
|
||||
|
||||
void *
|
||||
Sys_LoadLibrary(const char *path, const char *sym, void **handle)
|
||||
{
|
||||
HMODULE module;
|
||||
void *entry;
|
||||
|
||||
*handle = NULL;
|
||||
|
||||
module = LoadLibraryA(path);
|
||||
|
||||
if (!module)
|
||||
{
|
||||
Com_DPrintf("%s failed: LoadLibrary returned %lu on %s\n",
|
||||
__func__, GetLastError(), path);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (sym)
|
||||
{
|
||||
entry = GetProcAddress(module, sym);
|
||||
|
||||
if (!entry)
|
||||
{
|
||||
Com_DPrintf("%s failed: GetProcAddress returned %lu on %s\n",
|
||||
__func__, GetLastError(), path);
|
||||
FreeLibrary(module);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
entry = NULL;
|
||||
}
|
||||
|
||||
*handle = module;
|
||||
|
||||
Com_DPrintf("%s succeeded: %s\n", __func__, path);
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
void *
|
||||
Sys_GetProcAddress(void *handle, const char *sym)
|
||||
{
|
||||
return GetProcAddress(handle, sym);
|
||||
}
|
||||
|
||||
|
|
|
@ -31,14 +31,10 @@
|
|||
#ifdef USE_OPENAL
|
||||
|
||||
#include "../header/client.h"
|
||||
#include "../../backends/generic/header/qal.h"
|
||||
#include "header/local.h"
|
||||
#include "header/vorbis.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include "../../backends/windows/header/qal.h"
|
||||
#else
|
||||
#include "../../backends/unix/header/qal.h"
|
||||
#endif
|
||||
|
||||
/* translates from AL coordinate system to quake */
|
||||
#define AL_UnpackVector(v) - v[1], v[2], -v[0]
|
||||
|
|
|
@ -27,15 +27,10 @@
|
|||
*/
|
||||
|
||||
#include "../header/client.h"
|
||||
#include "../../backends/generic/header/qal.h"
|
||||
#include "header/local.h"
|
||||
#include "header/vorbis.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include "../../backends/windows/header/qal.h"
|
||||
#else
|
||||
#include "../../backends/unix/header/qal.h"
|
||||
#endif
|
||||
|
||||
void S_Play(void);
|
||||
void S_SoundList(void);
|
||||
void S_StopAllSounds(void);
|
||||
|
|
|
@ -777,6 +777,10 @@ void Sys_Error(char *error, ...);
|
|||
void Sys_Quit(void);
|
||||
char *Sys_GetHomeDir(void);
|
||||
|
||||
void Sys_FreeLibrary(void *handle);
|
||||
void *Sys_LoadLibrary(const char *path, const char *sym, void **handle);
|
||||
void *Sys_GetProcAddress(void *handle, const char *sym);
|
||||
|
||||
/* CLIENT / SERVER SYSTEMS */
|
||||
|
||||
void CL_Init(void);
|
||||
|
|
Loading…
Reference in a new issue