summaryrefslogtreecommitdiffstats
path: root/DOCS/man/options.rst
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2019-10-25 01:57:51 +0200
committerwm4 <wm4@nowhere>2019-10-25 01:57:51 +0200
commitd66eb93e5d45892cc0cdd72a579907e251d9953b (patch)
tree961adefdd013590256a6e4622c58ce36efae7536 /DOCS/man/options.rst
parent767c35c8839359593f7b0af14bcfe1cb92c41162 (diff)
downloadmpv-d66eb93e5d45892cc0cdd72a579907e251d9953b.tar.bz2
mpv-d66eb93e5d45892cc0cdd72a579907e251d9953b.tar.xz
client API: add async path; fix deadlock for vo_libmpv users
In commit 065c307e8e7db, I broke everything. It seemed like a nice idea, but it explicitly broke an assumption vo_libmpv were explicitly allowed to make: that observing properties does not lock the core. The commit did just that and locked the core for property updates. This made for example mpv's own OSX backend freeze (it uses vo_libmpv for convenience to make up for Apple's incredibly broken OpenGL shit). I don't want to revert that commit just because vo_libmpv's design is horrible. So instead add an optional asynchronous path, that is only used if vo_libmpv is in use (best idea ever?). Interestingly, this isn't so hard. It adds about 90 lines of code, which are only run on OSX and libmpv users, so I don't have to care about the crashes and weird behavior this might cause. It even worked on the first try except for a quickly fixed memory leak. The code path can be tested anywhere by just turning the uses_vo_libmpv condition into always true. The atomic is out of laziness. Saves some thinking how to get around the locking order.
Diffstat (limited to 'DOCS/man/options.rst')
0 files changed, 0 insertions, 0 deletions