aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--OpenAL32/alAuxEffectSlot.c24
1 files changed, 10 insertions, 14 deletions
diff --git a/OpenAL32/alAuxEffectSlot.c b/OpenAL32/alAuxEffectSlot.c
index fb8c27f4..479646b1 100644
--- a/OpenAL32/alAuxEffectSlot.c
+++ b/OpenAL32/alAuxEffectSlot.c
@@ -636,22 +636,18 @@ void UpdateEffectSlotProps(ALeffectslot *slot)
struct ALeffectslotProps *props;
ALeffectState *oldstate;
- props = ATOMIC_EXCHANGE(struct ALeffectslotProps*, &slot->Update, NULL);
+ /* Get an unused property container, or allocate a new one as needed. */
+ props = ATOMIC_LOAD(&slot->FreeList, almemory_order_relaxed);
if(!props)
+ props = al_calloc(16, sizeof(*props));
+ else
{
- /* Get an unused property container, or allocate a new one as needed. */
- props = ATOMIC_LOAD(&slot->FreeList, almemory_order_relaxed);
- if(!props)
- props = al_calloc(16, sizeof(*props));
- else
- {
- struct ALeffectslotProps *next;
- do {
- next = ATOMIC_LOAD(&props->next, almemory_order_relaxed);
- } while(ATOMIC_COMPARE_EXCHANGE_WEAK(struct ALeffectslotProps*,
- &slot->FreeList, &props, next, almemory_order_seq_cst,
- almemory_order_consume) == 0);
- }
+ struct ALeffectslotProps *next;
+ do {
+ next = ATOMIC_LOAD(&props->next, almemory_order_relaxed);
+ } while(ATOMIC_COMPARE_EXCHANGE_WEAK(struct ALeffectslotProps*,
+ &slot->FreeList, &props, next, almemory_order_seq_cst,
+ almemory_order_consume) == 0);
}
/* Copy in current property values. */