From: Alfred Agrell floating@muncher.se
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56698 --- dlls/quartz/avidec.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/dlls/quartz/avidec.c b/dlls/quartz/avidec.c index f494efdf1e8..89b3e998b73 100644 --- a/dlls/quartz/avidec.c +++ b/dlls/quartz/avidec.c @@ -482,12 +482,15 @@ static HRESULT WINAPI avi_decompressor_source_qc_Notify(IQualityControl *iface, TRACE("filter %p, sender %p, type %#x, proportion %ld, late %s, timestamp %s.\n", filter, sender, q.Type, q.Proportion, debugstr_time(q.Late), debugstr_time(q.TimeStamp));
- EnterCriticalSection(&filter->filter.stream_cs); - if (q.Late > 0) - filter->late = q.Late + q.TimeStamp; - else - filter->late = -1; - LeaveCriticalSection(&filter->filter.stream_cs); + /* Submarine Titans calls qc_Notify from a foreign thread while inside sink_Receive */ + if (TryEnterCriticalSection(&filter->filter.stream_cs)) + { + if (q.Late > 0) + filter->late = q.Late + q.TimeStamp; + else + filter->late = -1; + LeaveCriticalSection(&filter->filter.stream_cs); + } return S_OK; }