aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32/alState.c
diff options
context:
space:
mode:
Diffstat (limited to 'OpenAL32/alState.c')
-rw-r--r--OpenAL32/alState.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/OpenAL32/alState.c b/OpenAL32/alState.c
index 0e0e5d4b..bb500bf5 100644
--- a/OpenAL32/alState.c
+++ b/OpenAL32/alState.c
@@ -591,7 +591,23 @@ AL_API ALvoid AL_APIENTRY alProcessUpdatesSOFT(void)
Context = GetLockedContext();
if(!Context) return;
- Context->DeferUpdates = AL_FALSE;
+ if(Context->DeferUpdates)
+ {
+ ALsizei pos;
+
+ Context->DeferUpdates = AL_FALSE;
+
+ for(pos = 0;pos < Context->SourceMap.size;pos++)
+ {
+ ALsource *src = Context->SourceMap.array[pos].value;
+ ALenum new_state;
+
+ new_state = src->new_state;
+ src->new_state = AL_NONE;
+ if(new_state)
+ SetSourceState(src, Context, new_state);
+ }
+ }
UnlockContext(Context);
}