1
0
mirror of https://github.com/mpv-player/mpv synced 2025-01-10 00:49:32 +00:00
mpv/video
wm4 f00af71d12 vo_libmpv: fix some more uninit issues
This is mostly for the case when mpv_render_context_free() is called
while video is going on. This is supposed to gracefully stop video and
deinitialize everything properly. (I feel like it would put too much on
the API user to require that video is stopped before calling this
function. Whether video is running or not is a fairly highlevel thing,
and the API user could not do it in a race-free way.)

One problem was that unit() accessed ctx after ctx->in_use was set to
false. The update(ctx) call was basically a racy use-after-free. It
needed that call to wake up the mpv_render_context_free() loop that
waited for VO uninit. Fix this by triggering the wakeup inside the lock,
and then doing "barrier" locking in mpv_render_context_free().

Another problem was that the wait loop didn't really wait properly. IT
seems the had_kill_update field was a botched attempt to do that. It's
indeed quite hairy to do that with update(). Instead make use of the
dispatch queue (infinite timeout, using mp_dispatch_interrupt()), which
handles the problem of having to wait both for dispatch queue updates
and VO uninit at the same time.
2019-09-20 16:31:53 +02:00
..
decode video: generally try to align image data on 64 bytes 2019-09-19 20:37:05 +02:00
filter vf_fingerprint: use aligned_alloc instead of posix_memalign 2019-09-19 23:09:02 +02:00
out vo_libmpv: fix some more uninit issues 2019-09-20 16:31:53 +02:00
csputils.c
csputils.h
d3d.c video: rewrite filtering glue code 2018-01-30 03:10:27 -08:00
d3d.h
fmt-conversion.c vo/gpu: hwdec_vdpau: Support direct mode for 4:4:4 content 2019-07-08 01:11:27 +02:00
fmt-conversion.h
hwdec.c video: rewrite filtering glue code 2018-01-30 03:10:27 -08:00
hwdec.h video: rewrite filtering glue code 2018-01-30 03:10:27 -08:00
image_loader.c image_writer: move convert_image() to player/screenshot.c 2019-09-14 23:02:39 +02:00
image_loader.h
image_writer.c image_writer: add webp-compression option 2019-09-14 23:02:39 +02:00
image_writer.h image_writer: add webp-compression option 2019-09-14 23:02:39 +02:00
img_format.c video: generally try to align image data on 64 bytes 2019-09-19 20:37:05 +02:00
img_format.h vo/gpu: hwdec_vdpau: Support direct mode for 4:4:4 content 2019-07-08 01:11:27 +02:00
mp_image_pool.c mp_image_pool: add helper functions for FFmpeg hw frames pools 2018-01-18 00:59:07 -08:00
mp_image_pool.h mp_image_pool: add helper functions for FFmpeg hw frames pools 2018-01-18 00:59:07 -08:00
mp_image.c video: generally try to align image data on 64 bytes 2019-09-19 20:37:05 +02:00
mp_image.h video: generally try to align image data on 64 bytes 2019-09-19 20:37:05 +02:00
sws_utils.c sws_utils: don't force callers to provide option struct 2018-01-18 00:59:07 -08:00
sws_utils.h video: generally try to align image data on 64 bytes 2019-09-19 20:37:05 +02:00
vaapi.c vaapi: add option to select a non-default device path 2018-03-30 14:16:07 -07:00
vaapi.h vo_gpu: hwdec_vaapi: Suppress format errors when probing 2019-07-08 01:57:02 +02:00
vdpau_functions.inc
vdpau_mixer.c
vdpau_mixer.h
vdpau.c
vdpau.h