From: Anton Baskanov baskanov@gmail.com
This prevents a deadlock when the streaming thread is waiting for a buffer in avi_decompressor_sink_Receive(). Reproducible in Earth 2150 - Escape from the Blue Planet (GOG) when trying to skip the intro video and in Commandos 2 - Men of Courage (GOG). --- dlls/quartz/avidec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/quartz/avidec.c b/dlls/quartz/avidec.c index 0bb526b6d65..9f1a7db1586 100644 --- a/dlls/quartz/avidec.c +++ b/dlls/quartz/avidec.c @@ -649,6 +649,8 @@ static HRESULT avi_decompressor_cleanup_stream(struct strmbase_filter *iface) if (!filter->source.pin.peer) return S_OK;
+ IMemAllocator_Decommit(filter->source.pAllocator); + if (filter->hvid) { EnterCriticalSection(&filter->filter.stream_cs); @@ -661,8 +663,6 @@ static HRESULT avi_decompressor_cleanup_stream(struct strmbase_filter *iface) } }
- IMemAllocator_Decommit(filter->source.pAllocator); - return S_OK; }