aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2016-08-08 22:31:08 -0700
committerChris Robinson <[email protected]>2016-08-08 22:31:08 -0700
commit56d3598020f553681ec88b830c21218556a80a84 (patch)
tree9c734592ad323d778e687c39291195cf32baa0a9
parent6117cb2377b95e5800b6ff4febe77cf029d58e64 (diff)
Avoid checking DeferUpdates for each source state change
-rw-r--r--OpenAL32/alSource.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/OpenAL32/alSource.c b/OpenAL32/alSource.c
index 0e98f2f5..fb2ada10 100644
--- a/OpenAL32/alSource.c
+++ b/OpenAL32/alSource.c
@@ -2316,13 +2316,21 @@ AL_API ALvoid AL_APIENTRY alSourcePlayv(ALsizei n, const ALuint *sources)
context->MaxVoices = newcount;
}
- for(i = 0;i < n;i++)
+ if(ATOMIC_LOAD(&context->DeferUpdates, almemory_order_acquire))
{
- source = LookupSource(context, sources[i]);
- if(ATOMIC_LOAD(&context->DeferUpdates, almemory_order_acquire))
+ for(i = 0;i < n;i++)
+ {
+ source = LookupSource(context, sources[i]);
source->new_state = AL_PLAYING;
- else
+ }
+ }
+ else
+ {
+ for(i = 0;i < n;i++)
+ {
+ source = LookupSource(context, sources[i]);
SetSourceState(source, context, AL_PLAYING);
+ }
}
UnlockContext(context);
@@ -2354,13 +2362,21 @@ AL_API ALvoid AL_APIENTRY alSourcePausev(ALsizei n, const ALuint *sources)
}
LockContext(context);
- for(i = 0;i < n;i++)
+ if(ATOMIC_LOAD(&context->DeferUpdates, almemory_order_acquire))
{
- source = LookupSource(context, sources[i]);
- if(ATOMIC_LOAD(&context->DeferUpdates, almemory_order_acquire))
+ for(i = 0;i < n;i++)
+ {
+ source = LookupSource(context, sources[i]);
source->new_state = AL_PAUSED;
- else
+ }
+ }
+ else
+ {
+ for(i = 0;i < n;i++)
+ {
+ source = LookupSource(context, sources[i]);
SetSourceState(source, context, AL_PAUSED);
+ }
}
UnlockContext(context);