aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/mixer.c
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2016-05-19 20:50:55 -0700
committerChris Robinson <[email protected]>2016-05-19 20:50:55 -0700
commit7bf64eaee0788b7eb64c7410384a9ee66f75c4ce (patch)
treeb0b410caa1aa380fb329ff982f881a958f7eaec0 /Alc/mixer.c
parentd80f00173f0ef623f69a9cc307457b198186ded8 (diff)
Make the source position calues atomic
Diffstat (limited to 'Alc/mixer.c')
-rw-r--r--Alc/mixer.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/Alc/mixer.c b/Alc/mixer.c
index 38ec295c..1ee422be 100644
--- a/Alc/mixer.c
+++ b/Alc/mixer.c
@@ -384,10 +384,10 @@ ALvoid MixSource(ALvoice *voice, ALsource *Source, ALCdevice *Device, ALuint Sam
ALuint chan, j;
/* Get source info */
- State = Source->state;
+ State = AL_PLAYING; /* Only called while playing. */
BufferListItem = ATOMIC_LOAD(&Source->current_buffer);
- DataPosInt = Source->position;
- DataPosFrac = Source->position_fraction;
+ DataPosInt = ATOMIC_LOAD(&Source->position, almemory_order_relaxed);
+ DataPosFrac = ATOMIC_LOAD(&Source->position_fraction, almemory_order_relaxed);
NumChannels = Source->NumChannels;
SampleSize = Source->SampleSize;
Looping = voice->Looping;
@@ -752,8 +752,8 @@ ALvoid MixSource(ALvoice *voice, ALsource *Source, ALCdevice *Device, ALuint Sam
voice->Moving = AL_TRUE;
/* Update source info */
- Source->state = State;
- ATOMIC_STORE(&Source->current_buffer, BufferListItem);
- Source->position = DataPosInt;
- Source->position_fraction = DataPosFrac;
+ Source->state = State;
+ ATOMIC_STORE(&Source->current_buffer, BufferListItem, almemory_order_relaxed);
+ ATOMIC_STORE(&Source->position, DataPosInt, almemory_order_relaxed);
+ ATOMIC_STORE(&Source->position_fraction, DataPosFrac);
}