http://bugs.winehq.org/show_bug.cgi?id=31566
--- Comment #7 from Erich Hoover erich.e.hoover@gmail.com --- (In reply to Erich Hoover from comment #6)
Created attachment 49035 [details] Flip the order of a very critical set of locks ...
Just a little more detail about the call order, for those that are interested (why this change is necessary): == Thread 1== BaseRendererImpl_Receive -> EnterCriticalSection(csRenderLock); -> ... -> QualityControlRender_BeginRender -> ReferenceClock_GetTime -> EnterCriticalSection(filter.csFilter); -> ... -> LeaveCriticalSection(filter.csFilter); -> ... -> LeaveCriticalSection(csRenderLock); == Thread 2== BaseRenderer_InputPin_BeginFlush -> EnterCriticalSection(filter.csFilter); -> EnterCriticalSection(csRenderLock); -> ... -> LeaveCriticalSection(filter.csFilter); -> LeaveCriticalSection(csRenderLock);
There are a few other places that do similar things, so I went ahead and put together patches for all the obvious ones: https://github.com/compholio/wine-compholio/tree/master/patches/17-strmbase-...