diff options
Diffstat (limited to 'OpenAL32/alState.c')
-rw-r--r-- | OpenAL32/alState.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/OpenAL32/alState.c b/OpenAL32/alState.c index 4d7b00cf..699bea20 100644 --- a/OpenAL32/alState.c +++ b/OpenAL32/alState.c @@ -732,19 +732,17 @@ AL_API ALvoid AL_APIENTRY alDeferUpdatesSOFT(void) while(src != src_end) { ALsource *source = (*src)->Source; + if(!source) goto next; if(source->state != AL_PLAYING && source->state != AL_PAUSED) { - ALactivesource *temp = *(--src_end); - *src_end = *src; - *src = temp; - --(context->ActiveSourceCount); + (*src)->Source = NULL; continue; } if(ATOMIC_EXCHANGE(ALenum, &source->NeedsUpdate, AL_FALSE) || UpdateSources) - (*src)->Update(*src, context); - + (*src)->Update(*src, source, context); + next: src++; } |