diff options
-rw-r--r-- | al/buffer.cpp | 18 | ||||
-rw-r--r-- | alc/context.cpp | 54 |
2 files changed, 15 insertions, 57 deletions
diff --git a/al/buffer.cpp b/al/buffer.cpp index e56aa13e..28afc7c0 100644 --- a/al/buffer.cpp +++ b/al/buffer.cpp @@ -1474,19 +1474,12 @@ BufferSubList::~BufferSubList() #ifdef ALSOFT_EAX -FORCE_ALIGN ALboolean AL_APIENTRY EAXSetBufferMode(ALsizei n, const ALuint *buffers, ALint value) noexcept -{ return EAXSetBufferModeDirect(GetContextRef().get(), n, buffers, value); } +FORCE_ALIGN DECL_FUNC3(ALboolean, EAXSetBufferMode, ALsizei, const ALuint*, ALint) FORCE_ALIGN ALboolean AL_APIENTRY EAXSetBufferModeDirect(ALCcontext *context, ALsizei n, const ALuint *buffers, ALint value) noexcept { #define EAX_PREFIX "[EAXSetBufferMode] " - if(!context) - { - ERR(EAX_PREFIX "%s\n", "No current context."); - return AL_FALSE; - } - if(!eax_g_is_enabled) { context->setError(AL_INVALID_OPERATION, EAX_PREFIX "%s", "EAX not enabled."); @@ -1617,19 +1610,12 @@ FORCE_ALIGN ALboolean AL_APIENTRY EAXSetBufferModeDirect(ALCcontext *context, AL #undef EAX_PREFIX } -FORCE_ALIGN ALenum AL_APIENTRY EAXGetBufferMode(ALuint buffer, ALint *pReserved) noexcept -{ return EAXGetBufferModeDirect(GetContextRef().get(), buffer, pReserved); } +FORCE_ALIGN DECL_FUNC2(ALenum, EAXGetBufferMode, ALuint, ALint*) FORCE_ALIGN ALenum AL_APIENTRY EAXGetBufferModeDirect(ALCcontext *context, ALuint buffer, ALint *pReserved) noexcept { #define EAX_PREFIX "[EAXGetBufferMode] " - if(!context) - { - ERR(EAX_PREFIX "%s\n", "No current context."); - return AL_NONE; - } - if(!eax_g_is_enabled) { context->setError(AL_INVALID_OPERATION, EAX_PREFIX "%s", "EAX not enabled."); diff --git a/alc/context.cpp b/alc/context.cpp index 9c5a62c4..bba74a59 100644 --- a/alc/context.cpp +++ b/alc/context.cpp @@ -1020,48 +1020,20 @@ void ALCcontext::eaxCommit() eax_update_sources(); } -namespace { - -class EaxSetException : public EaxException { -public: - explicit EaxSetException(const char* message) - : EaxException{"EAX_SET", message} - {} -}; - -[[noreturn]] void eax_fail_set(const char* message) -{ - throw EaxSetException{message}; -} - -class EaxGetException : public EaxException { -public: - explicit EaxGetException(const char* message) - : EaxException{"EAX_GET", message} - {} -}; -[[noreturn]] void eax_fail_get(const char* message) +FORCE_ALIGN ALenum AL_APIENTRY EAXSet(const GUID *a, ALuint b, ALuint c, ALvoid *d, ALuint e) noexcept { - throw EaxGetException{message}; + auto context = GetContextRef(); + if(!context) UNLIKELY return AL_INVALID_OPERATION; + return EAXSetDirect(context.get(), a, b, c, d, e); } -} // namespace - - -FORCE_ALIGN ALenum AL_APIENTRY EAXSet(const GUID *property_set_id, ALuint property_id, - ALuint property_source_id, ALvoid *property_value, ALuint property_value_size) noexcept -{ return EAXSetDirect(GetContextRef().get(), property_set_id, property_id, property_source_id, property_value, property_value_size); } FORCE_ALIGN ALenum AL_APIENTRY EAXSetDirect(ALCcontext *context, const GUID *property_set_id, ALuint property_id, ALuint property_source_id, ALvoid *property_value, ALuint property_value_size) noexcept try { - if(!context) - eax_fail_set("No current context."); - std::lock_guard<std::mutex> prop_lock{context->mPropLock}; - return context->eax_eax_set( property_set_id, property_id, @@ -1069,26 +1041,26 @@ try property_value, property_value_size); } -catch (...) +catch(...) { eax_log_exception(__func__); return AL_INVALID_OPERATION; } -FORCE_ALIGN ALenum AL_APIENTRY EAXGet(const GUID *property_set_id, ALuint property_id, - ALuint property_source_id, ALvoid *property_value, ALuint property_value_size) noexcept -{ return EAXGetDirect(GetContextRef().get(), property_set_id, property_id, property_source_id, property_value, property_value_size); } +FORCE_ALIGN ALenum AL_APIENTRY EAXGet(const GUID *a, ALuint b, ALuint c, ALvoid *d, ALuint e) noexcept +{ + auto context = GetContextRef(); + if(!context) UNLIKELY return AL_INVALID_OPERATION; + return EAXGetDirect(context.get(), a, b, c, d, e); +} + FORCE_ALIGN ALenum AL_APIENTRY EAXGetDirect(ALCcontext *context, const GUID *property_set_id, ALuint property_id, ALuint property_source_id, ALvoid *property_value, ALuint property_value_size) noexcept try { - if(!context) - eax_fail_get("No current context."); - std::lock_guard<std::mutex> prop_lock{context->mPropLock}; - return context->eax_eax_get( property_set_id, property_id, @@ -1096,7 +1068,7 @@ try property_value, property_value_size); } -catch (...) +catch(...) { eax_log_exception(__func__); return AL_INVALID_OPERATION; |