diff options
Diffstat (limited to 'alc/backends/winmm.cpp')
-rw-r--r-- | alc/backends/winmm.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/alc/backends/winmm.cpp b/alc/backends/winmm.cpp index 649bb345..82625e1f 100644 --- a/alc/backends/winmm.cpp +++ b/alc/backends/winmm.cpp @@ -180,6 +180,8 @@ FORCE_ALIGN int WinMMPlayback::mixerProc() SetRTPriority(); althrd_setname(MIXER_THREAD_NAME); + const size_t frame_step{mDevice->channelsFromFmt()}; + std::unique_lock<WinMMPlayback> dlock{*this}; while(!mKillNow.load(std::memory_order_acquire) && mDevice->Connected.load(std::memory_order_acquire)) @@ -198,7 +200,7 @@ FORCE_ALIGN int WinMMPlayback::mixerProc() WAVEHDR &waveHdr = mWaveBuffer[widx]; widx = (widx+1) % mWaveBuffer.size(); - aluMixData(mDevice, waveHdr.lpData, mDevice->UpdateSize); + aluMixData(mDevice, waveHdr.lpData, mDevice->UpdateSize, frame_step); mWritable.fetch_sub(1, std::memory_order_acq_rel); waveOutWrite(mOutHdl, &waveHdr, sizeof(WAVEHDR)); } while(--todo); |