diff options
Diffstat (limited to 'al/listener.cpp')
-rw-r--r-- | al/listener.cpp | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/al/listener.cpp b/al/listener.cpp index 2a9b77f3..2a9f2cb3 100644 --- a/al/listener.cpp +++ b/al/listener.cpp @@ -48,33 +48,24 @@ inline void UpdateProps(ALCcontext *context) context->mPropsDirty = true; } -#ifdef ALSOFT_EAX inline void CommitAndUpdateProps(ALCcontext *context) { if(!context->mDeferUpdates) { - if(context->has_eax()) +#ifdef ALSOFT_EAX + if(context->eax_needs_commit()) { - context->mHoldUpdates.store(true, std::memory_order_release); - while((context->mUpdateCount.load(std::memory_order_acquire)&1) != 0) { - /* busy-wait */ - } - - context->eax_commit_and_update_sources(); + context->mPropsDirty = true; + context->applyAllUpdates(); + return; } +#endif UpdateContextProps(context); - context->mHoldUpdates.store(false, std::memory_order_release); return; } context->mPropsDirty = true; } -#else - -inline void CommitAndUpdateProps(ALCcontext *context) -{ UpdateProps(context); } -#endif - } // namespace AL_API void AL_APIENTRY alListenerf(ALenum param, ALfloat value) |