From 5d89ea32c2bb6d5a137cb345bec616b0d6708789 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 14 May 2023 19:39:25 -0700 Subject: Don't check for a null context in direct functions --- al/debug.cpp | 51 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 21 deletions(-) (limited to 'al/debug.cpp') diff --git a/al/debug.cpp b/al/debug.cpp index e28df917..9c0a63ef 100644 --- a/al/debug.cpp +++ b/al/debug.cpp @@ -234,14 +234,15 @@ void ALCcontext::sendDebugMessage(std::unique_lock &debuglock, Debug FORCE_ALIGN void AL_APIENTRY alDebugMessageCallbackEXT(ALDEBUGPROCEXT callback, void *userParam) noexcept -{ return alDebugMessageCallbackDirectEXT(GetContextRef().get(), callback, userParam); } +{ + auto context = GetContextRef(); + if(!context) UNLIKELY return; + return alDebugMessageCallbackDirectEXT(context.get(), callback, userParam); +} FORCE_ALIGN void AL_APIENTRY alDebugMessageCallbackDirectEXT(ALCcontext *context, ALDEBUGPROCEXT callback, void *userParam) noexcept { - if(!context) UNLIKELY - return; - std::lock_guard _{context->mDebugCbLock}; context->mDebugCb = callback; context->mDebugParam = userParam; @@ -249,7 +250,11 @@ FORCE_ALIGN void AL_APIENTRY alDebugMessageCallbackDirectEXT(ALCcontext *context FORCE_ALIGN void AL_APIENTRY alDebugMessageInsertEXT(ALenum source, ALenum type, ALuint id, ALenum severity, ALsizei length, const ALchar *message) noexcept -{ return alDebugMessageInsertDirectEXT(GetContextRef().get(), source, type, id, severity, length, message); } +{ + auto context = GetContextRef(); + if(!context) UNLIKELY return; + return alDebugMessageInsertDirectEXT(context.get(), source, type, id, severity, length, message); +} FORCE_ALIGN void AL_APIENTRY alDebugMessageInsertDirectEXT(ALCcontext *context, ALenum source, ALenum type, ALuint id, ALenum severity, ALsizei length, const ALchar *message) noexcept @@ -294,14 +299,15 @@ FORCE_ALIGN void AL_APIENTRY alDebugMessageInsertDirectEXT(ALCcontext *context, FORCE_ALIGN void AL_APIENTRY alDebugMessageControlEXT(ALenum source, ALenum type, ALenum severity, ALsizei count, const ALuint *ids, ALboolean enable) noexcept -{ return alDebugMessageControlDirectEXT(GetContextRef().get(), source, type, severity, count, ids, enable); } +{ + auto context = GetContextRef(); + if(!context) UNLIKELY return; + return alDebugMessageControlDirectEXT(context.get(), source, type, severity, count, ids, enable); +} FORCE_ALIGN void AL_APIENTRY alDebugMessageControlDirectEXT(ALCcontext *context, ALenum source, ALenum type, ALenum severity, ALsizei count, const ALuint *ids, ALboolean enable) noexcept { - if(!context) UNLIKELY - return; - if(count > 0) { if(!ids) @@ -395,14 +401,15 @@ FORCE_ALIGN void AL_APIENTRY alDebugMessageControlDirectEXT(ALCcontext *context, FORCE_ALIGN void AL_APIENTRY alPushDebugGroupEXT(ALenum source, ALuint id, ALsizei length, const ALchar *message) noexcept -{ return alPushDebugGroupDirectEXT(GetContextRef().get(), source, id, length, message); } +{ + auto context = GetContextRef(); + if(!context) UNLIKELY return; + return alPushDebugGroupDirectEXT(context.get(), source, id, length, message); +} FORCE_ALIGN void AL_APIENTRY alPushDebugGroupDirectEXT(ALCcontext *context, ALenum source, ALuint id, ALsizei length, const ALchar *message) noexcept { - if(!context) UNLIKELY - return; - if(length < 0) { size_t newlen{std::strlen(message)}; @@ -442,13 +449,14 @@ FORCE_ALIGN void AL_APIENTRY alPushDebugGroupDirectEXT(ALCcontext *context, ALen } FORCE_ALIGN void AL_APIENTRY alPopDebugGroupEXT(void) noexcept -{ return alPopDebugGroupDirectEXT(GetContextRef().get()); } +{ + auto context = GetContextRef(); + if(!context) UNLIKELY return; + return alPopDebugGroupDirectEXT(context.get()); +} FORCE_ALIGN void AL_APIENTRY alPopDebugGroupDirectEXT(ALCcontext *context) noexcept { - if(!context) UNLIKELY - return; - std::unique_lock debuglock{context->mDebugCbLock}; if(context->mDebugGroups.size() <= 1) { @@ -470,15 +478,16 @@ FORCE_ALIGN void AL_APIENTRY alPopDebugGroupDirectEXT(ALCcontext *context) noexc FORCE_ALIGN ALuint AL_APIENTRY alGetDebugMessageLogEXT(ALuint count, ALsizei logBufSize, ALenum *sources, ALenum *types, ALuint *ids, ALenum *severities, ALsizei *lengths, ALchar *logBuf) noexcept -{ return alGetDebugMessageLogDirectEXT(GetContextRef().get(), count, logBufSize, sources, types, ids, severities, lengths, logBuf); } +{ + auto context = GetContextRef(); + if(!context) UNLIKELY return 0; + return alGetDebugMessageLogDirectEXT(context.get(), count, logBufSize, sources, types, ids, severities, lengths, logBuf); +} FORCE_ALIGN ALuint AL_APIENTRY alGetDebugMessageLogDirectEXT(ALCcontext *context, ALuint count, ALsizei logBufSize, ALenum *sources, ALenum *types, ALuint *ids, ALenum *severities, ALsizei *lengths, ALchar *logBuf) noexcept { - if(!context) UNLIKELY - return 0; - if(logBufSize < 0) { context->setError(AL_INVALID_VALUE, "Negative debug log buffer size"); -- cgit v1.2.3