Print the opened device in alffplay
[openal-soft.git] / router / al.c
blob7af7168ad3f3bd53c24de55601ad7f81328cf6b5
2 #include "config.h"
4 #include <stddef.h>
6 #include "AL/al.h"
7 #include "router.h"
10 ATOMIC(DriverIface*) CurrentCtxDriver = ATOMIC_INIT_STATIC(NULL);
12 #define DECL_THUNK1(R,n,T1) AL_API R AL_APIENTRY n(T1 a) \
13 { return ATOMIC_LOAD(&CurrentCtxDriver, almemory_order_acquire)->n(a); }
14 #define DECL_THUNK2(R,n,T1,T2) AL_API R AL_APIENTRY n(T1 a, T2 b) \
15 { return ATOMIC_LOAD(&CurrentCtxDriver, almemory_order_acquire)->n(a, b); }
16 #define DECL_THUNK3(R,n,T1,T2,T3) AL_API R AL_APIENTRY n(T1 a, T2 b, T3 c) \
17 { return ATOMIC_LOAD(&CurrentCtxDriver, almemory_order_acquire)->n(a, b, c); }
18 #define DECL_THUNK4(R,n,T1,T2,T3,T4) AL_API R AL_APIENTRY n(T1 a, T2 b, T3 c, T4 d) \
19 { return ATOMIC_LOAD(&CurrentCtxDriver, almemory_order_acquire)->n(a, b, c, d); }
20 #define DECL_THUNK5(R,n,T1,T2,T3,T4,T5) AL_API R AL_APIENTRY n(T1 a, T2 b, T3 c, T4 d, T5 e) \
21 { return ATOMIC_LOAD(&CurrentCtxDriver, almemory_order_acquire)->n(a, b, c, d, e); }
24 /* Ugly hack for some apps calling alGetError without a current context, and
25 * expecting it to be AL_NO_ERROR.
27 AL_API ALenum AL_APIENTRY alGetError(void)
29 DriverIface *iface = ATOMIC_LOAD(&CurrentCtxDriver, almemory_order_acquire);
30 if(iface) return iface->alGetError();
31 return AL_NO_ERROR;
35 DECL_THUNK1(void, alDopplerFactor, ALfloat)
36 DECL_THUNK1(void, alDopplerVelocity, ALfloat)
37 DECL_THUNK1(void, alSpeedOfSound, ALfloat)
38 DECL_THUNK1(void, alDistanceModel, ALenum)
40 DECL_THUNK1(void, alEnable, ALenum)
41 DECL_THUNK1(void, alDisable, ALenum)
42 DECL_THUNK1(ALboolean, alIsEnabled, ALenum)
44 DECL_THUNK1(const ALchar*, alGetString, ALenum)
45 DECL_THUNK2(void, alGetBooleanv, ALenum, ALboolean*)
46 DECL_THUNK2(void, alGetIntegerv, ALenum, ALint*)
47 DECL_THUNK2(void, alGetFloatv, ALenum, ALfloat*)
48 DECL_THUNK2(void, alGetDoublev, ALenum, ALdouble*)
49 DECL_THUNK1(ALboolean, alGetBoolean, ALenum)
50 DECL_THUNK1(ALint, alGetInteger, ALenum)
51 DECL_THUNK1(ALfloat, alGetFloat, ALenum)
52 DECL_THUNK1(ALdouble, alGetDouble, ALenum)
54 DECL_THUNK1(ALboolean, alIsExtensionPresent, const ALchar*)
55 DECL_THUNK1(void*, alGetProcAddress, const ALchar*)
56 DECL_THUNK1(ALenum, alGetEnumValue, const ALchar*)
58 DECL_THUNK2(void, alListenerf, ALenum, ALfloat)
59 DECL_THUNK4(void, alListener3f, ALenum, ALfloat, ALfloat, ALfloat)
60 DECL_THUNK2(void, alListenerfv, ALenum, const ALfloat*)
61 DECL_THUNK2(void, alListeneri, ALenum, ALint)
62 DECL_THUNK4(void, alListener3i, ALenum, ALint, ALint, ALint)
63 DECL_THUNK2(void, alListeneriv, ALenum, const ALint*)
64 DECL_THUNK2(void, alGetListenerf, ALenum, ALfloat*)
65 DECL_THUNK4(void, alGetListener3f, ALenum, ALfloat*, ALfloat*, ALfloat*)
66 DECL_THUNK2(void, alGetListenerfv, ALenum, ALfloat*)
67 DECL_THUNK2(void, alGetListeneri, ALenum, ALint*)
68 DECL_THUNK4(void, alGetListener3i, ALenum, ALint*, ALint*, ALint*)
69 DECL_THUNK2(void, alGetListeneriv, ALenum, ALint*)
71 DECL_THUNK2(void, alGenSources, ALsizei, ALuint*)
72 DECL_THUNK2(void, alDeleteSources, ALsizei, const ALuint*)
73 DECL_THUNK1(ALboolean, alIsSource, ALuint)
74 DECL_THUNK3(void, alSourcef, ALuint, ALenum, ALfloat)
75 DECL_THUNK5(void, alSource3f, ALuint, ALenum, ALfloat, ALfloat, ALfloat)
76 DECL_THUNK3(void, alSourcefv, ALuint, ALenum, const ALfloat*)
77 DECL_THUNK3(void, alSourcei, ALuint, ALenum, ALint)
78 DECL_THUNK5(void, alSource3i, ALuint, ALenum, ALint, ALint, ALint)
79 DECL_THUNK3(void, alSourceiv, ALuint, ALenum, const ALint*)
80 DECL_THUNK3(void, alGetSourcef, ALuint, ALenum, ALfloat*)
81 DECL_THUNK5(void, alGetSource3f, ALuint, ALenum, ALfloat*, ALfloat*, ALfloat*)
82 DECL_THUNK3(void, alGetSourcefv, ALuint, ALenum, ALfloat*)
83 DECL_THUNK3(void, alGetSourcei, ALuint, ALenum, ALint*)
84 DECL_THUNK5(void, alGetSource3i, ALuint, ALenum, ALint*, ALint*, ALint*)
85 DECL_THUNK3(void, alGetSourceiv, ALuint, ALenum, ALint*)
86 DECL_THUNK2(void, alSourcePlayv, ALsizei, const ALuint*)
87 DECL_THUNK2(void, alSourceStopv, ALsizei, const ALuint*)
88 DECL_THUNK2(void, alSourceRewindv, ALsizei, const ALuint*)
89 DECL_THUNK2(void, alSourcePausev, ALsizei, const ALuint*)
90 DECL_THUNK1(void, alSourcePlay, ALuint)
91 DECL_THUNK1(void, alSourceStop, ALuint)
92 DECL_THUNK1(void, alSourceRewind, ALuint)
93 DECL_THUNK1(void, alSourcePause, ALuint)
94 DECL_THUNK3(void, alSourceQueueBuffers, ALuint, ALsizei, const ALuint*)
95 DECL_THUNK3(void, alSourceUnqueueBuffers, ALuint, ALsizei, ALuint*)
97 DECL_THUNK2(void, alGenBuffers, ALsizei, ALuint*)
98 DECL_THUNK2(void, alDeleteBuffers, ALsizei, const ALuint*)
99 DECL_THUNK1(ALboolean, alIsBuffer, ALuint)
100 DECL_THUNK3(void, alBufferf, ALuint, ALenum, ALfloat)
101 DECL_THUNK5(void, alBuffer3f, ALuint, ALenum, ALfloat, ALfloat, ALfloat)
102 DECL_THUNK3(void, alBufferfv, ALuint, ALenum, const ALfloat*)
103 DECL_THUNK3(void, alBufferi, ALuint, ALenum, ALint)
104 DECL_THUNK5(void, alBuffer3i, ALuint, ALenum, ALint, ALint, ALint)
105 DECL_THUNK3(void, alBufferiv, ALuint, ALenum, const ALint*)
106 DECL_THUNK3(void, alGetBufferf, ALuint, ALenum, ALfloat*)
107 DECL_THUNK5(void, alGetBuffer3f, ALuint, ALenum, ALfloat*, ALfloat*, ALfloat*)
108 DECL_THUNK3(void, alGetBufferfv, ALuint, ALenum, ALfloat*)
109 DECL_THUNK3(void, alGetBufferi, ALuint, ALenum, ALint*)
110 DECL_THUNK5(void, alGetBuffer3i, ALuint, ALenum, ALint*, ALint*, ALint*)
111 DECL_THUNK3(void, alGetBufferiv, ALuint, ALenum, ALint*)
112 DECL_THUNK5(void, alBufferData, ALuint, ALenum, const ALvoid*, ALsizei, ALsizei)