aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2019-04-10 13:05:21 -0700
committerChris Robinson <[email protected]>2019-04-10 13:05:21 -0700
commitf39d4598b7dedfca92fc6bcb4eedf646656db7b3 (patch)
tree4532654cc17feefea0d6d132a906e56937e2631b
parentd6f72b777a058f3feb42eb109b0baf66070c0528 (diff)
Add exception protection to some AL functions
-rw-r--r--OpenAL32/alError.cpp3
-rw-r--r--OpenAL32/alExtension.cpp7
-rw-r--r--OpenAL32/event.cpp5
3 files changed, 15 insertions, 0 deletions
diff --git a/OpenAL32/alError.cpp b/OpenAL32/alError.cpp
index 2c2a80eb..324f4c1b 100644
--- a/OpenAL32/alError.cpp
+++ b/OpenAL32/alError.cpp
@@ -32,6 +32,7 @@
#include "alMain.h"
#include "alcontext.h"
#include "alError.h"
+#include "alexcpt.h"
ALboolean TrapALError = AL_FALSE;
@@ -80,6 +81,7 @@ void alSetError(ALCcontext *context, ALenum errorCode, const char *msg, ...)
}
AL_API ALenum AL_APIENTRY alGetError(void)
+START_API_FUNC
{
ContextRef context{GetContextRef()};
if(UNLIKELY(!context))
@@ -100,3 +102,4 @@ AL_API ALenum AL_APIENTRY alGetError(void)
return context->LastError.exchange(AL_NO_ERROR);
}
+END_API_FUNC
diff --git a/OpenAL32/alExtension.cpp b/OpenAL32/alExtension.cpp
index 3cfc253e..dda2a628 100644
--- a/OpenAL32/alExtension.cpp
+++ b/OpenAL32/alExtension.cpp
@@ -30,8 +30,10 @@
#include "alMain.h"
#include "alcontext.h"
#include "alError.h"
+#include "alexcpt.h"
AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extName)
+START_API_FUNC
{
ContextRef context{GetContextRef()};
if(UNLIKELY(!context)) return AL_FALSE;
@@ -57,16 +59,21 @@ AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extName)
return AL_FALSE;
}
+END_API_FUNC
AL_API ALvoid* AL_APIENTRY alGetProcAddress(const ALchar *funcName)
+START_API_FUNC
{
if(!funcName) return nullptr;
return alcGetProcAddress(nullptr, funcName);
}
+END_API_FUNC
AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *enumName)
+START_API_FUNC
{
if(!enumName) return static_cast<ALenum>(0);
return alcGetEnumValue(nullptr, enumName);
}
+END_API_FUNC
diff --git a/OpenAL32/event.cpp b/OpenAL32/event.cpp
index a2e3addd..f01227e9 100644
--- a/OpenAL32/event.cpp
+++ b/OpenAL32/event.cpp
@@ -13,6 +13,7 @@
#include "alAuxEffectSlot.h"
#include "ringbuffer.h"
#include "threads.h"
+#include "alexcpt.h"
static int EventThread(ALCcontext *context)
@@ -129,6 +130,7 @@ void StopEventThrd(ALCcontext *ctx)
}
AL_API void AL_APIENTRY alEventControlSOFT(ALsizei count, const ALenum *types, ALboolean enable)
+START_API_FUNC
{
ContextRef context{GetContextRef()};
if(UNLIKELY(!context)) return;
@@ -186,8 +188,10 @@ AL_API void AL_APIENTRY alEventControlSOFT(ALsizei count, const ALenum *types, A
std::lock_guard<std::mutex>{context->EventCbLock};
}
}
+END_API_FUNC
AL_API void AL_APIENTRY alEventCallbackSOFT(ALEVENTPROCSOFT callback, void *userParam)
+START_API_FUNC
{
ContextRef context{GetContextRef()};
if(UNLIKELY(!context)) return;
@@ -197,3 +201,4 @@ AL_API void AL_APIENTRY alEventCallbackSOFT(ALEVENTPROCSOFT callback, void *user
context->EventCb = callback;
context->EventParam = userParam;
}
+END_API_FUNC