summaryrefslogtreecommitdiffstats
path: root/options
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-04-23 20:40:20 +0200
committerwm4 <wm4@nowhere>2014-04-23 21:16:52 +0200
commited7e7e2eb407031b3ba79bf485c1cdd34b7a2baf (patch)
tree22175f4cda6e4a5e5a7d18d2b15588fda71f5ee1 /options
parentff4028f3bf0c241c835d527ddc7cb8aa779f849c (diff)
downloadmpv-ed7e7e2eb407031b3ba79bf485c1cdd34b7a2baf.tar.bz2
mpv-ed7e7e2eb407031b3ba79bf485c1cdd34b7a2baf.tar.xz
dispatch: fix broken locking
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.
Diffstat (limited to 'options')
0 files changed, 0 insertions, 0 deletions