aboutsummaryrefslogtreecommitdiffstats
path: root/alc
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2020-04-07 12:46:35 -0700
committerChris Robinson <[email protected]>2020-04-07 12:46:35 -0700
commit024112a53afeca55216f3cb7b49579419494cea6 (patch)
treebbd92de1430d91dab86e32a61d8076ba6732a967 /alc
parent0077a0166756bf0cdd1193b0d66f8306ed909eb9 (diff)
Use acquire-release semantics for changing deferred updates
Diffstat (limited to 'alc')
-rw-r--r--alc/alc.cpp2
-rw-r--r--alc/alcontext.h2
2 files changed, 2 insertions, 2 deletions
diff --git a/alc/alc.cpp b/alc/alc.cpp
index bd88023b..31d06993 100644
--- a/alc/alc.cpp
+++ b/alc/alc.cpp
@@ -1621,7 +1621,7 @@ void SetDefaultChannelOrder(ALCdevice *device)
void ALCcontext::processUpdates()
{
std::lock_guard<std::mutex> _{mPropLock};
- if(mDeferUpdates.exchange(false))
+ if(mDeferUpdates.exchange(false, std::memory_order_acq_rel))
{
/* Tell the mixer to stop applying updates, then wait for any active
* updating to finish, before providing updates.
diff --git a/alc/alcontext.h b/alc/alcontext.h
index a3da7e10..d62fc7d5 100644
--- a/alc/alcontext.h
+++ b/alc/alcontext.h
@@ -217,7 +217,7 @@ struct ALCcontext : public al::intrusive_ref<ALCcontext> {
* This does *NOT* stop mixing, but rather prevents certain property
* changes from taking effect.
*/
- void deferUpdates() noexcept { mDeferUpdates.store(true); }
+ void deferUpdates() noexcept { mDeferUpdates.exchange(true, std::memory_order_acq_rel); }
/** Resumes update processing after being deferred. */
void processUpdates();