XAudio2: Use XAUDIO2_VOICE_NOSAMPLESPLAYED when possible.

For versions of XAudio2 with an IXAudio2SourceVoice::GetState() that offers a
flags parameter, we can use XAUDIO2_VOICE_NOSAMPLESPLAYED, since we don't
need this information in our current calls. According to MSDN, this makes the
the call about 3x faster.
This commit is contained in:
Ryan C. Gordon 2014-07-30 09:54:01 -04:00
parent e76fecc4ed
commit db1dd7560e

View File

@ -241,14 +241,14 @@ XAUDIO2_WaitDone(_THIS)
SDL_assert(!this->enabled); /* flag that stops playing. */ SDL_assert(!this->enabled); /* flag that stops playing. */
IXAudio2SourceVoice_Discontinuity(source); IXAudio2SourceVoice_Discontinuity(source);
#if SDL_XAUDIO2_WIN8 #if SDL_XAUDIO2_WIN8
IXAudio2SourceVoice_GetState(source, &state, 0); IXAudio2SourceVoice_GetState(source, &state, XAUDIO2_VOICE_NOSAMPLESPLAYED);
#else #else
IXAudio2SourceVoice_GetState(source, &state); IXAudio2SourceVoice_GetState(source, &state);
#endif #endif
while (state.BuffersQueued > 0) { while (state.BuffersQueued > 0) {
SDL_SemWait(this->hidden->semaphore); SDL_SemWait(this->hidden->semaphore);
#if SDL_XAUDIO2_WIN8 #if SDL_XAUDIO2_WIN8
IXAudio2SourceVoice_GetState(source, &state, 0); IXAudio2SourceVoice_GetState(source, &state, XAUDIO2_VOICE_NOSAMPLESPLAYED);
#else #else
IXAudio2SourceVoice_GetState(source, &state); IXAudio2SourceVoice_GetState(source, &state);
#endif #endif