diff options
author | wm4 <wm4@nowhere> | 2020-08-05 23:28:24 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2020-08-05 23:28:24 +0200 |
commit | 53ee1ae4171a0ddfb5c9a965c404a18d93e82952 (patch) | |
tree | 536dff5f5c0daaf37edd323353187b19ee64776e /screenshot.h | |
parent | d0ab562b1fb22490799f42f3f90b61f01b593bab (diff) | |
download | mpv-53ee1ae4171a0ddfb5c9a965c404a18d93e82952.tar.bz2 mpv-53ee1ae4171a0ddfb5c9a965c404a18d93e82952.tar.xz |
auto_profiles: register hooks for more synchronous profile application
The property observation mechanism is fairly asynchronous to the player
core, and Lua scripts also are (they run in a separate thread). This may
sometimes lead to profiles being applied when it's too load.
For example, you may want to change network options depending on the
input URL - but most of these options would have to be set before the
HTTP access is made. But it could happen that the profile, and thus the
option, was applied at an slightly but arbitrary later time.
This is generally not fixable. But for the most important use-cases,
such as applying changes before media opening or playback
initialization, we can use some of the defined hooks.
Hooks make it synchronous again, by allowing API users (such as scripts)
to block the core because it continues with loading.
For this we simply don't continue a given hook, until we receive an idle
event, and have applied all changes. The idle event is in general used
to wait for property change notifications to settle down. Some of this
relies on the subtle ways guarantees are (maybe) given. See commit
ba70b150fbe for the messy details. I'm not quite sure whether it
actually works, because I can't be bothered to read and understand my
bullshit from half a year ago. Should provide at least some improvement,
though.
Diffstat (limited to 'screenshot.h')
0 files changed, 0 insertions, 0 deletions