mirror of
https://github.com/mpv-player/mpv
synced 2024-12-16 03:45:23 +00:00
ed7e7e2eb4
mp_dispatch_queue_process() releases the queue->lock mutex while processing a dispatch callback. But this allowed mp_dispatch_lock() to grab the "logical" lock represented by queue->locked. Grabbing the logical lock is not a problem in itself, but it can't be allowed to happen while the callback is still running. Fix this by claiming the logical lock while the dispatch callback is processed. Also make sure that the thread calling mp_dispatch_lock() is woken up properly. Fortunately, this didn't matter, because the locking function is unused. |
||
---|---|---|
.. | ||
charset_conv.c | ||
charset_conv.h | ||
dispatch.c | ||
dispatch.h | ||
ring.c | ||
ring.h |