mirror of https://github.com/mpv-player/mpv
12d1404b04
Until now, they could be aborted only by ending playback, and calling mpv_abort_async_command didn't do anything. This requires furthering the mess how playback abort is done. The main reason why mp_cancel exists at all is to avoid that a "frozen" demuxer (blocked on network I/O or whatever) cannot freeze the core. The core should always get its way. Previously, there was a single mp_cancel handle, that could be signaled, and all demuxers would unfreeze. With external files, we might want to abort loading of a certain external file, which automatically means they need a separate mp_cancel. So give every demuxer its own mp_cancel, and "slave" it to whatever parent mp_cancel handles aborting. Since the mpv demuxer API conflates creating the demuxer and reading the file headers, mp_cancel strictly need to be created before the demuxer is created (or we couldn't abort loading). Although we give every demuxer its own mp_cancel (as "enforced" by cancel_and_free_demuxer), it's still rather messy to create/destroy it along with the demuxer. |
||
---|---|---|
.. | ||
lua | ||
mpv-osd-symbols.sfdir | ||
osxbundle/mpv.app/Contents | ||
__init__.py | ||
appveyor-build.sh | ||
appveyor-install.sh | ||
dylib-unhell.py | ||
file2string.py | ||
gen-osd-font.sh | ||
idet.sh | ||
matroska.py | ||
mpv_identify.sh | ||
osxbundle.py | ||
stats-conv.py | ||
travis-deps | ||
travis-rebuild-website | ||
umpv | ||
uncrustify.cfg | ||
zsh.pl |