Module: wine Branch: master Commit: 2294bf6c1eed343013999197134db0416c21a3de URL: https://gitlab.winehq.org/wine/wine/-/commit/2294bf6c1eed343013999197134db04...
Author: Rémi Bernon rbernon@codeweavers.com Date: Mon May 13 14:59:50 2024 +0200
mfreadwrite/reader: Shutdown the queue when public ref is released.
Instead of internal ref, otherwise an executing callback might be the one releasing the last ref, and MFUnlockWorkQueue will cancel and then block waiting for the callback itself to finish executing.
---
dlls/mfreadwrite/reader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/mfreadwrite/reader.c b/dlls/mfreadwrite/reader.c index a9d25848e7b..87ed0fe6cfc 100644 --- a/dlls/mfreadwrite/reader.c +++ b/dlls/mfreadwrite/reader.c @@ -258,7 +258,6 @@ static ULONG source_reader_release(struct source_reader *reader) } source_reader_release_responses(reader, NULL); free(reader->streams); - MFUnlockWorkQueue(reader->queue); DeleteCriticalSection(&reader->cs); free(reader); } @@ -1666,6 +1665,7 @@ static ULONG WINAPI src_reader_Release(IMFSourceReaderEx *iface) } }
+ MFUnlockWorkQueue(reader->queue); source_reader_release(reader); }