diff options
Diffstat (limited to 'OpenAL32/alState.c')
-rw-r--r-- | OpenAL32/alState.c | 18 |
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); } |