https://bugs.winehq.org/show_bug.cgi?id=43367
--- Comment #25 from Zebediah Figura z.figura12@gmail.com --- Thanks, that works.
The deadlock at the end is between one thread calling IVideoWindow::put_Visible() to hide the video window, which causes messages to be sent to the parent on another thread, which then calls IVideoWindow::NotifyOwnerMessage() and deadlocks because the first thread is still holding the filter graph's lock.
Apparently native quartz's solution to this is... just don't lock IVideoWindow methods on the filter graph. At least, through manual testing I can call multiple IVideoWindow methods concurrently.
The stuttering audio is no surprise in general; our DirectSound renderer is pretty much held together with spit and tape. One thing that does specifically seem to be going wrong is that audio samples are at first arriving late by a good two seconds, which may match up with the "short period of white screen" you describe. Even apart from that, though, there are pretty constant underruns. This might be a fault of the CPU not being fast enough to process audio, though. Could you please add +timestamp to the list of debug channels? I foolishly forgot to request that in the first place.