WASAPI: Fix an error where a buffer can possible be unreleased.

This commit is contained in:
David Reid
2022-01-19 17:50:34 +10:00
parent 11e2e59324
commit f769b18157
2 changed files with 15 additions and 0 deletions
+1
View File
@@ -1,5 +1,6 @@
v0.11.6 - TBD v0.11.6 - TBD
==================== ====================
* WASAPI: Fix a bug where the device is not stopped when an error occurrs when writing to a playback device.
* The node graph can now be used as a node. This allows node graphs to be connected to other node graphs. * The node graph can now be used as a node. This allows node graphs to be connected to other node graphs.
* Fix a crash with high-pass and band-pass filters. * Fix a crash with high-pass and band-pass filters.
* Fix an audio glitch when mixing engine nodes (ma_sound and ma_sound_group). * Fix an audio glitch when mixing engine nodes (ma_sound and ma_sound_group).
+14
View File
@@ -20842,9 +20842,23 @@ static ma_result ma_device_uninit__wasapi(ma_device* pDevice)
#endif #endif
if (pDevice->wasapi.pRenderClient) { if (pDevice->wasapi.pRenderClient) {
if (pDevice->wasapi.pMappedBufferPlayback != NULL) {
ma_IAudioRenderClient_ReleaseBuffer((ma_IAudioRenderClient*)pDevice->wasapi.pRenderClient, pDevice->wasapi.mappedBufferPlaybackCap, 0);
pDevice->wasapi.pMappedBufferPlayback = NULL;
pDevice->wasapi.mappedBufferPlaybackCap = 0;
pDevice->wasapi.mappedBufferPlaybackLen = 0;
}
ma_IAudioRenderClient_Release((ma_IAudioRenderClient*)pDevice->wasapi.pRenderClient); ma_IAudioRenderClient_Release((ma_IAudioRenderClient*)pDevice->wasapi.pRenderClient);
} }
if (pDevice->wasapi.pCaptureClient) { if (pDevice->wasapi.pCaptureClient) {
if (pDevice->wasapi.pMappedBufferCapture != NULL) {
ma_IAudioCaptureClient_ReleaseBuffer((ma_IAudioCaptureClient*)pDevice->wasapi.pCaptureClient, pDevice->wasapi.mappedBufferCaptureCap);
pDevice->wasapi.pMappedBufferCapture = NULL;
pDevice->wasapi.mappedBufferCaptureCap = 0;
pDevice->wasapi.mappedBufferCaptureLen = 0;
}
ma_IAudioCaptureClient_Release((ma_IAudioCaptureClient*)pDevice->wasapi.pCaptureClient); ma_IAudioCaptureClient_Release((ma_IAudioCaptureClient*)pDevice->wasapi.pCaptureClient);
} }