Torque3D Documentation / _generateds / LoadOAL.linux.cpp

LoadOAL.linux.cpp

Engine/source/sfx/openal/linux/LoadOAL.linux.cpp

More...

Public Variables

Public Functions

ALboolean
LoadOAL10Library(char * szOALFullPathName, LPOPENALFNTABLE lpOALFnTable)

Detailed Description

Public Variables

void * openal_library 

Public Functions

LoadOAL10Library(char * szOALFullPathName, LPOPENALFNTABLE lpOALFnTable)

UnloadOAL10Library()

  1
  2//-----------------------------------------------------------------------------
  3// Copyright (c) 2012 GarageGames, LLC
  4//
  5// Permission is hereby granted, free of charge, to any person obtaining a copy
  6// of this software and associated documentation files (the "Software"), to
  7// deal in the Software without restriction, including without limitation the
  8// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  9// sell copies of the Software, and to permit persons to whom the Software is
 10// furnished to do so, subject to the following conditions:
 11//
 12// The above copyright notice and this permission notice shall be included in
 13// all copies or substantial portions of the Software.
 14//
 15// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 16// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 17// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 18// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 19// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 20// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 21// IN THE SOFTWARE.
 22//-----------------------------------------------------------------------------
 23
 24// TODO: Implement OpenAL loading code which is currently stubbed out.
 25
 26#if defined(__linux__) && !defined(TORQUE_OS_LINUX)
 27#define TORQUE_OS_LINUX
 28#endif
 29
 30#include <dlfcn.h>
 31#include <err.h>
 32#include <string.h>
 33#include "sfx/openal/LoadOAL.h"
 34#include "console/console.h"
 35
 36void* openal_library = NULL;
 37
 38ALboolean LoadOAL10Library(char *szOALFullPathName, LPOPENALFNTABLE lpOALFnTable)
 39{
 40   if (!lpOALFnTable)
 41      return AL_FALSE;
 42
 43    if (szOALFullPathName)
 44      openal_library = dlopen(szOALFullPathName, RTLD_LAZY);
 45   else
 46      openal_library = dlopen("libopenal.so", RTLD_LAZY);
 47
 48    if (openal_library == NULL) {
 49        Con::errorf("Failed to load OpenAL shared library. Sound will not be available");
 50        return AL_FALSE;
 51    }
 52
 53   memset(lpOALFnTable, 0, sizeof(OPENALFNTABLE));
 54
 55   lpOALFnTable->alEnable = (LPALENABLE)dlsym(openal_library,"alEnable");
 56   if (lpOALFnTable->alEnable == NULL)
 57   {
 58      warn("Failed to retrieve 'alEnable' function address\n");
 59      return AL_FALSE;
 60   }
 61   lpOALFnTable->alDisable = (LPALDISABLE)dlsym(openal_library,"alDisable");
 62   if (lpOALFnTable->alDisable == NULL)
 63   {
 64      warn("Failed to retrieve 'alDisable' function address\n");
 65      return AL_FALSE;
 66   }
 67   lpOALFnTable->alIsEnabled = (LPALISENABLED)dlsym(openal_library,"alIsEnabled");
 68   if (lpOALFnTable->alIsEnabled == NULL)
 69   {
 70      warn("Failed to retrieve 'alIsEnabled' function address\n");
 71      return AL_FALSE;
 72   }
 73   lpOALFnTable->alGetBoolean = (LPALGETBOOLEAN)dlsym(openal_library,"alGetBoolean");
 74   if (lpOALFnTable->alGetBoolean == NULL)
 75   {
 76      warn("Failed to retrieve 'alGetBoolean' function address\n");
 77      return AL_FALSE;
 78   }
 79   lpOALFnTable->alGetInteger = (LPALGETINTEGER)dlsym(openal_library,"alGetInteger");
 80   if (lpOALFnTable->alGetInteger == NULL)
 81   {
 82      warn("Failed to retrieve 'alGetInteger' function address\n");
 83      return AL_FALSE;
 84   }
 85   lpOALFnTable->alGetFloat = (LPALGETFLOAT)dlsym(openal_library,"alGetFloat");
 86   if (lpOALFnTable->alGetFloat == NULL)
 87   {
 88      warn("Failed to retrieve 'alGetFloat' function address\n");
 89      return AL_FALSE;
 90   }
 91   lpOALFnTable->alGetDouble = (LPALGETDOUBLE)dlsym(openal_library,"alGetDouble");
 92   if (lpOALFnTable->alGetDouble == NULL)
 93   {
 94      warn("Failed to retrieve 'alGetDouble' function address\n");
 95      return AL_FALSE;
 96   }
 97   lpOALFnTable->alGetBooleanv = (LPALGETBOOLEANV)dlsym(openal_library,"alGetBooleanv");
 98   if (lpOALFnTable->alGetBooleanv == NULL)
 99   {
100      warn("Failed to retrieve 'alGetBooleanv' function address\n");
101      return AL_FALSE;
102   }
103   lpOALFnTable->alGetIntegerv = (LPALGETINTEGERV)dlsym(openal_library,"alGetIntegerv");
104   if (lpOALFnTable->alGetIntegerv == NULL)
105   {
106      warn("Failed to retrieve 'alGetIntegerv' function address\n");
107      return AL_FALSE;
108   }
109   lpOALFnTable->alGetFloatv = (LPALGETFLOATV)dlsym(openal_library,"alGetFloatv");
110   if (lpOALFnTable->alGetFloatv == NULL)
111   {
112      warn("Failed to retrieve 'alGetFloatv' function address\n");
113      return AL_FALSE;
114   }
115   lpOALFnTable->alGetDoublev = (LPALGETDOUBLEV)dlsym(openal_library,"alGetDoublev");
116   if (lpOALFnTable->alGetDoublev == NULL)
117   {
118      warn("Failed to retrieve 'alGetDoublev' function address\n");
119      return AL_FALSE;
120   }
121   lpOALFnTable->alGetString = (LPALGETSTRING)dlsym(openal_library,"alGetString");
122   if (lpOALFnTable->alGetString == NULL)
123   {
124      warn("Failed to retrieve 'alGetString' function address\n");
125      return AL_FALSE;
126   }
127   lpOALFnTable->alGetError = (LPALGETERROR)dlsym(openal_library,"alGetError");
128   if (lpOALFnTable->alGetError == NULL)
129   {
130      warn("Failed to retrieve 'alGetError' function address\n");
131      return AL_FALSE;
132   }
133   lpOALFnTable->alIsExtensionPresent = (LPALISEXTENSIONPRESENT)dlsym(openal_library,"alIsExtensionPresent");
134   if (lpOALFnTable->alIsExtensionPresent == NULL)
135   {
136      warn("Failed to retrieve 'alIsExtensionPresent' function address\n");
137      return AL_FALSE;
138   }
139   lpOALFnTable->alGetProcAddress = (LPALGETPROCADDRESS)dlsym(openal_library,"alGetProcAddress");
140   if (lpOALFnTable->alGetProcAddress == NULL)
141   {
142      warn("Failed to retrieve 'alGetProcAddress' function address\n");
143      return AL_FALSE;
144   }
145   lpOALFnTable->alGetEnumValue = (LPALGETENUMVALUE)dlsym(openal_library,"alGetEnumValue");
146   if (lpOALFnTable->alGetEnumValue == NULL)
147   {
148      warn("Failed to retrieve 'alGetEnumValue' function address\n");
149      return AL_FALSE;
150   }
151   lpOALFnTable->alListeneri = (LPALLISTENERI)dlsym(openal_library,"alListeneri");
152   if (lpOALFnTable->alListeneri == NULL)
153   {
154      warn("Failed to retrieve 'alListeneri' function address\n");
155      return AL_FALSE;
156   }
157   lpOALFnTable->alListenerf = (LPALLISTENERF)dlsym(openal_library,"alListenerf");
158   if (lpOALFnTable->alListenerf == NULL)
159   {
160      warn("Failed to retrieve 'alListenerf' function address\n");
161      return AL_FALSE;
162   }
163   lpOALFnTable->alListener3f = (LPALLISTENER3F)dlsym(openal_library,"alListener3f");
164   if (lpOALFnTable->alListener3f == NULL)
165   {
166      warn("Failed to retrieve 'alListener3f' function address\n");
167      return AL_FALSE;
168   }
169   lpOALFnTable->alListenerfv = (LPALLISTENERFV)dlsym(openal_library,"alListenerfv");
170   if (lpOALFnTable->alListenerfv == NULL)
171   {
172      warn("Failed to retrieve 'alListenerfv' function address\n");
173      return AL_FALSE;
174   }
175   lpOALFnTable->alGetListeneri = (LPALGETLISTENERI)dlsym(openal_library,"alGetListeneri");
176   if (lpOALFnTable->alGetListeneri == NULL)
177   {
178      warn("Failed to retrieve 'alGetListeneri' function address\n");
179      return AL_FALSE;
180   }
181   lpOALFnTable->alGetListenerf =(LPALGETLISTENERF)dlsym(openal_library,"alGetListenerf");
182   if (lpOALFnTable->alGetListenerf == NULL)
183   {
184      warn("Failed to retrieve 'alGetListenerf' function address\n");
185      return AL_FALSE;
186   }
187   lpOALFnTable->alGetListener3f = (LPALGETLISTENER3F)dlsym(openal_library,"alGetListener3f");
188   if (lpOALFnTable->alGetListener3f == NULL)
189   {
190      warn("Failed to retrieve 'alGetListener3f' function address\n");
191      return AL_FALSE;
192   }
193   lpOALFnTable->alGetListenerfv = (LPALGETLISTENERFV)dlsym(openal_library,"alGetListenerfv");
194   if (lpOALFnTable->alGetListenerfv == NULL)
195   {
196      warn("Failed to retrieve 'alGetListenerfv' function address\n");
197      return AL_FALSE;
198   }
199   lpOALFnTable->alGenSources = (LPALGENSOURCES)dlsym(openal_library,"alGenSources");
200   if (lpOALFnTable->alGenSources == NULL)
201   {
202      warn("Failed to retrieve 'alGenSources' function address\n");
203      return AL_FALSE;
204   }
205   lpOALFnTable->alDeleteSources = (LPALDELETESOURCES)dlsym(openal_library,"alDeleteSources");
206   if (lpOALFnTable->alDeleteSources == NULL)
207   {
208      warn("Failed to retrieve 'alDeleteSources' function address\n");
209      return AL_FALSE;
210   }
211   lpOALFnTable->alIsSource = (LPALISSOURCE)dlsym(openal_library,"alIsSource");
212   if (lpOALFnTable->alIsSource == NULL)
213   {
214      warn("Failed to retrieve 'alIsSource' function address\n");
215      return AL_FALSE;
216   }
217   lpOALFnTable->alSourcei = (LPALSOURCEI)dlsym(openal_library,"alSourcei");
218   if (lpOALFnTable->alSourcei == NULL)
219   {
220      warn("Failed to retrieve 'alSourcei' function address\n");
221      return AL_FALSE;
222   }
223   lpOALFnTable->alSourcef = (LPALSOURCEF)dlsym(openal_library,"alSourcef");
224   if (lpOALFnTable->alSourcef == NULL)
225   {
226      warn("Failed to retrieve 'alSourcef' function address\n");
227      return AL_FALSE;
228   }
229   lpOALFnTable->alSource3f = (LPALSOURCE3F)dlsym(openal_library,"alSource3f");
230   if (lpOALFnTable->alSource3f == NULL)
231   {
232      warn("Failed to retrieve 'alSource3f' function address\n");
233      return AL_FALSE;
234   }
235   lpOALFnTable->alSourcefv = (LPALSOURCEFV)dlsym(openal_library,"alSourcefv");
236   if (lpOALFnTable->alSourcefv == NULL)
237   {
238      warn("Failed to retrieve 'alSourcefv' function address\n");
239      return AL_FALSE;
240   }
241   lpOALFnTable->alGetSourcei = (LPALGETSOURCEI)dlsym(openal_library,"alGetSourcei");
242   if (lpOALFnTable->alGetSourcei == NULL)
243   {
244      warn("Failed to retrieve 'alGetSourcei' function address\n");
245      return AL_FALSE;
246   }
247   lpOALFnTable->alGetSourcef = (LPALGETSOURCEF)dlsym(openal_library,"alGetSourcef");
248   if (lpOALFnTable->alGetSourcef == NULL)
249   {
250      warn("Failed to retrieve 'alGetSourcef' function address\n");
251      return AL_FALSE;
252   }
253   lpOALFnTable->alGetSourcefv = (LPALGETSOURCEFV)dlsym(openal_library,"alGetSourcefv");
254   if (lpOALFnTable->alGetSourcefv == NULL)
255   {
256      warn("Failed to retrieve 'alGetSourcefv' function address\n");
257      return AL_FALSE;
258   }
259   lpOALFnTable->alSourcePlayv = (LPALSOURCEPLAYV)dlsym(openal_library,"alSourcePlayv");
260   if (lpOALFnTable->alSourcePlayv == NULL)
261   {
262      warn("Failed to retrieve 'alSourcePlayv' function address\n");
263      return AL_FALSE;
264   }
265   lpOALFnTable->alSourceStopv = (LPALSOURCESTOPV)dlsym(openal_library,"alSourceStopv");
266   if (lpOALFnTable->alSourceStopv == NULL)
267   {
268      warn("Failed to retrieve 'alSourceStopv' function address\n");
269      return AL_FALSE;
270   }
271   lpOALFnTable->alSourcePlay = (LPALSOURCEPLAY)dlsym(openal_library,"alSourcePlay");
272   if (lpOALFnTable->alSourcePlay == NULL)
273   {
274      warn("Failed to retrieve 'alSourcePlay' function address\n");
275      return AL_FALSE;
276   }
277   lpOALFnTable->alSourcePause = (LPALSOURCEPAUSE)dlsym(openal_library,"alSourcePause");
278   if (lpOALFnTable->alSourcePause == NULL)
279   {
280      warn("Failed to retrieve 'alSourcePause' function address\n");
281      return AL_FALSE;
282   }
283   lpOALFnTable->alSourceStop = (LPALSOURCESTOP)dlsym(openal_library,"alSourceStop");
284   if (lpOALFnTable->alSourceStop == NULL)
285   {
286      warn("Failed to retrieve 'alSourceStop' function address\n");
287      return AL_FALSE;
288   }
289   lpOALFnTable->alSourceRewind = (LPALSOURCEREWIND)dlsym(openal_library,"alSourceRewind");
290   if (lpOALFnTable->alSourceRewind == NULL)
291   {
292      warn("Failed to retrieve 'alSourceRewind' function address\n");
293      return AL_FALSE;
294   }
295   lpOALFnTable->alGenBuffers = (LPALGENBUFFERS)dlsym(openal_library,"alGenBuffers");
296   if (lpOALFnTable->alGenBuffers == NULL)
297   {
298      warn("Failed to retrieve 'alGenBuffers' function address\n");
299      return AL_FALSE;
300   }
301   lpOALFnTable->alDeleteBuffers = (LPALDELETEBUFFERS)dlsym(openal_library,"alDeleteBuffers");
302   if (lpOALFnTable->alDeleteBuffers == NULL)
303   {
304      warn("Failed to retrieve 'alDeleteBuffers' function address\n");
305      return AL_FALSE;
306   }
307   lpOALFnTable->alIsBuffer = (LPALISBUFFER)dlsym(openal_library,"alIsBuffer");
308   if (lpOALFnTable->alIsBuffer == NULL)
309   {
310      warn("Failed to retrieve 'alIsBuffer' function address\n");
311      return AL_FALSE;
312   }
313   lpOALFnTable->alBufferData = (LPALBUFFERDATA)dlsym(openal_library,"alBufferData");
314   if (lpOALFnTable->alBufferData == NULL)
315   {
316      warn("Failed to retrieve 'alBufferData' function address\n");
317      return AL_FALSE;
318   }
319   lpOALFnTable->alGetBufferi = (LPALGETBUFFERI)dlsym(openal_library,"alGetBufferi");
320   if (lpOALFnTable->alGetBufferi == NULL)
321   {
322      warn("Failed to retrieve 'alGetBufferi' function address\n");
323      return AL_FALSE;
324   }
325   lpOALFnTable->alGetBufferf = (LPALGETBUFFERF)dlsym(openal_library,"alGetBufferf");
326   if (lpOALFnTable->alGetBufferf == NULL)
327   {
328      warn("Failed to retrieve 'alGetBufferf' function address\n");
329      return AL_FALSE;
330   }
331   lpOALFnTable->alSourceQueueBuffers = (LPALSOURCEQUEUEBUFFERS)dlsym(openal_library,"alSourceQueueBuffers");
332   if (lpOALFnTable->alSourceQueueBuffers == NULL)
333   {
334      warn("Failed to retrieve 'alSourceQueueBuffers' function address\n");
335      return AL_FALSE;
336   }
337   lpOALFnTable->alSourceUnqueueBuffers = (LPALSOURCEUNQUEUEBUFFERS)dlsym(openal_library,"alSourceUnqueueBuffers");
338   if (lpOALFnTable->alSourceUnqueueBuffers == NULL)
339   {
340      warn("Failed to retrieve 'alSourceUnqueueBuffers' function address\n");
341      return AL_FALSE;
342   }
343   lpOALFnTable->alDistanceModel = (LPALDISTANCEMODEL)dlsym(openal_library,"alDistanceModel");
344   if (lpOALFnTable->alDistanceModel == NULL)
345   {
346      warn("Failed to retrieve 'alDistanceModel' function address\n");
347      return AL_FALSE;
348   }
349   lpOALFnTable->alDopplerFactor = (LPALDOPPLERFACTOR)dlsym(openal_library,"alDopplerFactor");
350   if (lpOALFnTable->alDopplerFactor == NULL)
351   {
352      warn("Failed to retrieve 'alDopplerFactor' function address\n");
353      return AL_FALSE;
354   }
355   lpOALFnTable->alDopplerVelocity = (LPALDOPPLERVELOCITY)dlsym(openal_library,"alDopplerVelocity");
356   if (lpOALFnTable->alDopplerVelocity == NULL)
357   {
358      warn("Failed to retrieve 'alDopplerVelocity' function address\n");
359      return AL_FALSE;
360   }
361   lpOALFnTable->alcGetString = (LPALCGETSTRING)dlsym(openal_library,"alcGetString");
362   if (lpOALFnTable->alcGetString == NULL)
363   {
364      warn("Failed to retrieve 'alcGetString' function address\n");
365      return AL_FALSE;
366   }
367   lpOALFnTable->alcGetIntegerv = (LPALCGETINTEGERV)dlsym(openal_library,"alcGetIntegerv");
368   if (lpOALFnTable->alcGetIntegerv == NULL)
369   {
370      warn("Failed to retrieve 'alcGetIntegerv' function address\n");
371      return AL_FALSE;
372   }
373   lpOALFnTable->alcOpenDevice = (LPALCOPENDEVICE)dlsym(openal_library,"alcOpenDevice");
374   if (lpOALFnTable->alcOpenDevice == NULL)
375   {
376      warn("Failed to retrieve 'alcOpenDevice' function address\n");
377      return AL_FALSE;
378   }
379   lpOALFnTable->alcCloseDevice = (LPALCCLOSEDEVICE)dlsym(openal_library,"alcCloseDevice");
380   if (lpOALFnTable->alcCloseDevice == NULL)
381   {
382      warn("Failed to retrieve 'alcCloseDevice' function address\n");
383      return AL_FALSE;
384   }
385   lpOALFnTable->alcCreateContext = (LPALCCREATECONTEXT)dlsym(openal_library,"alcCreateContext");
386   if (lpOALFnTable->alcCreateContext == NULL)
387   {
388      warn("Failed to retrieve 'alcCreateContext' function address\n");
389      return AL_FALSE;
390   }
391   lpOALFnTable->alcMakeContextCurrent = (LPALCMAKECONTEXTCURRENT)dlsym(openal_library,"alcMakeContextCurrent");
392   if (lpOALFnTable->alcMakeContextCurrent == NULL)
393   {
394      warn("Failed to retrieve 'alcMakeContextCurrent' function address\n");
395      return AL_FALSE;
396   }
397   lpOALFnTable->alcProcessContext = (LPALCPROCESSCONTEXT)dlsym(openal_library,"alcProcessContext");
398   if (lpOALFnTable->alcProcessContext == NULL)
399   {
400      warn("Failed to retrieve 'alcProcessContext' function address\n");
401      return AL_FALSE;
402   }
403   lpOALFnTable->alcGetCurrentContext = (LPALCGETCURRENTCONTEXT)dlsym(openal_library,"alcGetCurrentContext");
404   if (lpOALFnTable->alcGetCurrentContext == NULL)
405   {
406      warn("Failed to retrieve 'alcGetCurrentContext' function address\n");
407      return AL_FALSE;
408   }
409   lpOALFnTable->alcGetContextsDevice = (LPALCGETCONTEXTSDEVICE)dlsym(openal_library,"alcGetContextsDevice");
410   if (lpOALFnTable->alcGetContextsDevice == NULL)
411   {
412      warn("Failed to retrieve 'alcGetContextsDevice' function address\n");
413      return AL_FALSE;
414   }
415   lpOALFnTable->alcSuspendContext = (LPALCSUSPENDCONTEXT)dlsym(openal_library,"alcSuspendContext");
416   if (lpOALFnTable->alcSuspendContext == NULL)
417   {
418      warn("Failed to retrieve 'alcSuspendContext' function address\n");
419      return AL_FALSE;
420   }
421   lpOALFnTable->alcDestroyContext = (LPALCDESTROYCONTEXT)dlsym(openal_library,"alcDestroyContext");
422   if (lpOALFnTable->alcDestroyContext == NULL)
423   {
424      warn("Failed to retrieve 'alcDestroyContext' function address\n");
425      return AL_FALSE;
426   }
427   lpOALFnTable->alcGetError = (LPALCGETERROR)dlsym(openal_library,"alcGetError");
428   if (lpOALFnTable->alcGetError == NULL)
429   {
430      warn("Failed to retrieve 'alcGetError' function address\n");
431      return AL_FALSE;
432   }
433   lpOALFnTable->alcIsExtensionPresent = (LPALCISEXTENSIONPRESENT)dlsym(openal_library,"alcIsExtensionPresent");
434   if (lpOALFnTable->alcIsExtensionPresent == NULL)
435   {
436      warn("Failed to retrieve 'alcIsExtensionPresent' function address\n");
437      return AL_FALSE;
438   }
439   lpOALFnTable->alcGetProcAddress = (LPALCGETPROCADDRESS)dlsym(openal_library,"alcGetProcAddress");
440   if (lpOALFnTable->alcGetProcAddress == NULL)
441   {
442      warn("Failed to retrieve 'alcGetProcAddress' function address\n");
443      return AL_FALSE;
444   }
445   lpOALFnTable->alcGetEnumValue = (LPALCGETENUMVALUE)dlsym(openal_library,"alcGetEnumValue");
446   if (lpOALFnTable->alcGetEnumValue == NULL)
447   {
448      warn("Failed to retrieve 'alcGetEnumValue' function address\n");
449      return AL_FALSE;
450   }
451#if defined(AL_ALEXT_PROTOTYPES)
452  //efx
453    lpOALFnTable->alGenEffects = (LPALGENEFFECTS)dlsym(openal_library, "alGenEffects");
454    if (lpOALFnTable->alGenEffects == NULL)
455    {
456       warn("Failed to retrieve 'alGenEffects' function address\n");
457       return AL_FALSE;
458    }
459    lpOALFnTable->alEffecti = (LPALEFFECTI)dlsym(openal_library, "alEffecti");
460    if (lpOALFnTable->alEffecti == NULL)
461    {
462       warn("Failed to retrieve 'alEffecti' function address\n");
463       return AL_FALSE;
464    }
465    lpOALFnTable->alEffectiv = (LPALEFFECTIV)dlsym(openal_library, "alEffectiv");
466    if (lpOALFnTable->alEffectiv == NULL)
467    {
468       warn("Failed to retrieve 'alEffectiv' function address\n");
469       return AL_FALSE;
470    }
471    lpOALFnTable->alEffectf = (LPALEFFECTF)dlsym(openal_library, "alEffectf");
472    if (lpOALFnTable->alEffectf == NULL)
473    {
474       warn("Failed to retrieve 'alEffectf' function address\n");
475       return AL_FALSE;
476    }
477    lpOALFnTable->alEffectfv = (LPALEFFECTFV)dlsym(openal_library, "alEffectfv");
478    if (lpOALFnTable->alEffectfv == NULL)
479    {
480       warn("Failed to retrieve 'alEffectfv' function address\n");
481       return AL_FALSE;
482    }
483    lpOALFnTable->alGetEffecti = (LPALGETEFFECTI)dlsym(openal_library, "alGetEffecti");
484    if (lpOALFnTable->alGetEffecti == NULL)
485    {
486       warn("Failed to retrieve 'alGetEffecti' function address\n");
487       return AL_FALSE;
488    }
489    lpOALFnTable->alGetEffectiv = (LPALGETEFFECTIV)dlsym(openal_library, "alGetEffectiv");
490    if (lpOALFnTable->alGetEffectiv == NULL)
491    {
492       warn("Failed to retrieve 'alGetEffectiv' function address\n");
493       return AL_FALSE;
494    }
495    lpOALFnTable->alGetEffectf = (LPALGETEFFECTF)dlsym(openal_library, "alGetEffectf");
496    if (lpOALFnTable->alGetEffectf == NULL)
497    {
498       warn("Failed to retrieve 'alGetEffectf' function address\n");
499       return AL_FALSE;
500    }
501    lpOALFnTable->alGetEffectfv = (LPALGETEFFECTFV)dlsym(openal_library, "alGetEffectfv");
502    if (lpOALFnTable->alGetEffectfv == NULL)
503    {
504       warn("Failed to retrieve 'alGetEffectfv' function address\n");
505       return AL_FALSE;
506    }
507    lpOALFnTable->alDeleteEffects = (LPALDELETEEFFECTS)dlsym(openal_library, "alDeleteEffects");
508    if (lpOALFnTable->alDeleteEffects == NULL)
509    {
510       warn("Failed to retrieve 'alDeleteEffects' function address\n");
511       return AL_FALSE;
512    }
513    lpOALFnTable->alIsEffect = (LPALISEFFECT)dlsym(openal_library, "alIsEffect");
514    if (lpOALFnTable->alIsEffect == NULL)
515    {
516       warn("Failed to retrieve 'alIsEffect' function address\n");
517       return AL_FALSE;
518    }
519    lpOALFnTable->alAuxiliaryEffectSlotf = (LPALAUXILIARYEFFECTSLOTF)dlsym(openal_library, "alAuxiliaryEffectSlotf");
520    if (lpOALFnTable->alAuxiliaryEffectSlotf == NULL)
521    {
522       warn("Failed to retrieve 'alAuxiliaryEffectSlotf' function address\n");
523       return AL_FALSE;
524    }
525    lpOALFnTable->alAuxiliaryEffectSlotfv = (LPALAUXILIARYEFFECTSLOTFV)dlsym(openal_library, "alAuxiliaryEffectSlotfv");
526    if (lpOALFnTable->alAuxiliaryEffectSlotfv == NULL)
527    {
528       warn("Failed to retrieve 'alAuxiliaryEffectSlotfv' function address\n");
529       return AL_FALSE;
530    }
531    lpOALFnTable->alAuxiliaryEffectSloti = (LPALAUXILIARYEFFECTSLOTI)dlsym(openal_library, "alAuxiliaryEffectSloti");
532    if (lpOALFnTable->alAuxiliaryEffectSloti == NULL)
533    {
534       warn("Failed to retrieve 'alAuxiliaryEffectSloti' function address\n");
535       return AL_FALSE;
536    }
537    lpOALFnTable->alAuxiliaryEffectSlotiv = (LPALAUXILIARYEFFECTSLOTIV)dlsym(openal_library, "alAuxiliaryEffectSlotiv");
538    if (lpOALFnTable->alAuxiliaryEffectSlotiv == NULL)
539    {
540       warn("Failed to retrieve 'alAuxiliaryEffectSlotiv' function address\n");
541       return AL_FALSE;
542    }
543    lpOALFnTable->alIsAuxiliaryEffectSlot = (LPALISAUXILIARYEFFECTSLOT)dlsym(openal_library, "alIsAuxiliaryEffectSlot");
544    if (lpOALFnTable->alIsAuxiliaryEffectSlot == NULL)
545    {
546       warn("Failed to retrieve 'alIsAuxiliaryEffectSlot' function address\n");
547       return AL_FALSE;
548    }
549    lpOALFnTable->alGenAuxiliaryEffectSlots = (LPALGENAUXILIARYEFFECTSLOTS)dlsym(openal_library, "alGenAuxiliaryEffectSlots");
550    if (lpOALFnTable->alGenAuxiliaryEffectSlots == NULL)
551    {
552       warn("Failed to retrieve 'alGenAuxiliaryEffectSlots' function address\n");
553       return AL_FALSE;
554    }
555    lpOALFnTable->alDeleteAuxiliaryEffectSlots = (LPALDELETEAUXILIARYEFFECTSLOTS)dlsym(openal_library, "alDeleteAuxiliaryEffectSlots");
556    if (lpOALFnTable->alDeleteAuxiliaryEffectSlots == NULL)
557    {
558       warn("Failed to retrieve 'alDeleteAuxiliaryEffectSlots' function address\n");
559       return AL_FALSE;
560    }
561    lpOALFnTable->alGetAuxiliaryEffectSlotf = (LPALGETAUXILIARYEFFECTSLOTF)dlsym(openal_library, "alGetAuxiliaryEffectSlotf");
562    if (lpOALFnTable->alGetAuxiliaryEffectSlotf == NULL)
563    {
564       warn("Failed to retrieve 'alGetAuxiliaryEffectSlotf' function address\n");
565       return AL_FALSE;
566    }
567    lpOALFnTable->alGetAuxiliaryEffectSlotfv = (LPALGETAUXILIARYEFFECTSLOTFV)dlsym(openal_library, "alGetAuxiliaryEffectSlotfv");
568    if (lpOALFnTable->alGetAuxiliaryEffectSlotfv == NULL)
569    {
570       warn("Failed to retrieve 'alGetAuxiliaryEffectSlotfv' function address\n");
571       return AL_FALSE;
572    }
573    lpOALFnTable->alGetAuxiliaryEffectSloti = (LPALGETAUXILIARYEFFECTSLOTI)dlsym(openal_library, "alGetAuxiliaryEffectSloti");
574    if (lpOALFnTable->alGetAuxiliaryEffectSloti == NULL)
575    {
576       warn("Failed to retrieve 'alGetAuxiliaryEffectSloti' function address\n");
577       return AL_FALSE;
578    }
579    lpOALFnTable->alGetAuxiliaryEffectSlotiv = (LPALGETAUXILIARYEFFECTSLOTIV)dlsym(openal_library, "alGetAuxiliaryEffectSlotiv");
580    if (lpOALFnTable->alGetAuxiliaryEffectSlotiv == NULL)
581    {
582       warn("Failed to retrieve 'alGetAuxiliaryEffectSlotiv' function address\n");
583       return AL_FALSE;
584    }
585    lpOALFnTable->alSource3i = (LPALSOURCE3I)dlsym(openal_library, "alSource3i");
586    if (lpOALFnTable->alSource3i == NULL)
587    {
588       warn("Failed to retrieve 'alSource3i' function address\n");
589       return AL_FALSE;
590    }
591#endif
592   return AL_TRUE;
593}
594
595ALvoid UnloadOAL10Library()
596{
597    if (openal_library != NULL)
598        dlclose(openal_library);
599}
600