--- doomsday/plugins/openal/src/driver_openal.cpp 2012-05-15 06:01:38.000000000 +0200 +++ doomsday/plugins/openal/src/driver_openal.cpp 2012-05-29 07:37:21.170639342 +0200 @@ -66,6 +66,7 @@ ALenum(*EAXGet) (const struct _GUID* pro ALenum(*EAXSet) (const struct _GUID* propertySetID, ALuint prop, ALuint source, ALvoid* value, ALuint size); #endif +extern "C" { int DS_Init(void); void DS_Shutdown(void); void DS_Event(int type); @@ -83,6 +84,7 @@ void DS_SFX_Setv(sfxbuffer_t* buf, int p void DS_SFX_Listener(int prop, float value); void DS_SFX_Listenerv(int prop, float* values); int DS_SFX_Getv(int prop, void* values); +} #ifdef WIN32 // EAX 2.0 GUIDs @@ -134,14 +136,14 @@ static void loadExtensions(void) #endif } -int DS_Init(void) +extern "C" int DS_Init(void) { // Already initialized? if(initOk) return true; // Open a playback device. /// @todo Shouldn't we use the system default device? - device = alcOpenDevice((ALCchar*) "DirectSound3D"); + device = alcOpenDevice((ALCchar*) NULL); if(!device) { Con_Message("OpenAL init failed (device: DirectSound3D).\n"); @@ -167,7 +169,7 @@ int DS_Init(void) return true; } -void DS_Shutdown(void) +extern "C" void DS_Shutdown(void) { if(!initOk) return; @@ -185,12 +187,12 @@ void DS_Event(int /*type*/) // Not supported. } -int DS_SFX_Init(void) +extern "C" int DS_SFX_Init(void) { return true; } -sfxbuffer_t* DS_SFX_CreateBuffer(int flags, int bits, int rate) +extern "C" sfxbuffer_t* DS_SFX_CreateBuffer(int flags, int bits, int rate) { sfxbuffer_t* buf; ALuint bufName, srcName; @@ -236,7 +238,7 @@ sfxbuffer_t* DS_SFX_CreateBuffer(int fla return buf; } -void DS_SFX_DestroyBuffer(sfxbuffer_t* buf) +extern "C" void DS_SFX_DestroyBuffer(sfxbuffer_t* buf) { ALuint srcName, bufName; @@ -251,7 +253,7 @@ void DS_SFX_DestroyBuffer(sfxbuffer_t* b Z_Free(buf); } -void DS_SFX_Load(sfxbuffer_t* buf, struct sfxsample_s* sample) +extern "C" void DS_SFX_Load(sfxbuffer_t* buf, struct sfxsample_s* sample) { if(!buf || !sample) return; @@ -277,7 +279,7 @@ void DS_SFX_Load(sfxbuffer_t* buf, struc /** * Stops the buffer and makes it forget about its sample. */ -void DS_SFX_Reset(sfxbuffer_t* buf) +extern "C" void DS_SFX_Reset(sfxbuffer_t* buf) { if(!buf) return; @@ -285,7 +287,7 @@ void DS_SFX_Reset(sfxbuffer_t* buf) buf->sample = NULL; } -void DS_SFX_Play(sfxbuffer_t* buf) +extern "C" void DS_SFX_Play(sfxbuffer_t* buf) { ALuint source; @@ -310,7 +312,7 @@ void DS_SFX_Play(sfxbuffer_t* buf) buf->flags |= SFXBF_PLAYING; } -void DS_SFX_Stop(sfxbuffer_t* buf) +extern "C" void DS_SFX_Stop(sfxbuffer_t* buf) { if(!buf || !buf->sample) return; @@ -318,7 +320,7 @@ void DS_SFX_Stop(sfxbuffer_t* buf) buf->flags &= ~SFXBF_PLAYING; } -void DS_SFX_Refresh(sfxbuffer_t* buf) +extern "C" void DS_SFX_Refresh(sfxbuffer_t* buf) { ALint state; @@ -368,7 +370,7 @@ static void setPan(ALuint source, float alSourcefv(source, AL_POSITION, pos); } -void DS_SFX_Set(sfxbuffer_t* buf, int prop, float value) +extern "C" void DS_SFX_Set(sfxbuffer_t* buf, int prop, float value) { ALuint source; @@ -411,7 +413,7 @@ void DS_SFX_Set(sfxbuffer_t* buf, int pr } } -void DS_SFX_Setv(sfxbuffer_t* buf, int prop, float* values) +extern "C" void DS_SFX_Setv(sfxbuffer_t* buf, int prop, float* values) { ALuint source; @@ -435,7 +437,7 @@ void DS_SFX_Setv(sfxbuffer_t* buf, int p } } -void DS_SFX_Listener(int prop, float value) +extern "C" void DS_SFX_Listener(int prop, float value) { switch(prop) { @@ -451,7 +453,7 @@ void DS_SFX_Listener(int prop, float val } } -void DS_SFX_Listenerv(int prop, float* values) +extern "C" void DS_SFX_Listenerv(int prop, float* values) { float ori[6]; @@ -489,7 +491,7 @@ void DS_SFX_Listenerv(int prop, float* v } } -int DS_SFX_Getv(int /*prop*/, void* /*values*/) +extern "C" int DS_SFX_Getv(int /*prop*/, void* /*values*/) { // Stub. return 0;