1
0
mirror of https://github.com/mpv-player/mpv synced 2025-01-15 03:23:23 +00:00
mpv/video
Dudemanguy e9cde72536 wayland: refactor presentation time
The motivation for this change was a segfault caused by e107342 which
has complicated reasons for occuring (i.e. I'm not 100% sure but I think
it is a really weird race). The major part of this commit is moving the
initialization of presentation listener to the frame_callback function.
Calling it in swap_buffers worked fine but in practice it meant a lot of
meaningless function calls if a window was hidden (the presentation
would just be immediately discarded). By calling it in frame_callback,
we ensure the listener is only created when it is possible to receive a
presentation event.

Of course calling the presentation listener in feedback_presented or
feedback_discarded was considered, but ultimately these events are too
slow. Receiving the ust/msc/sbc triplet here and then passing it to mpv
results in higher vsync judder since there is (likely) not enough time
before the next pageflip. By design, the frame callback is meant to give
us as much time as possible before the next repaint so calling it here
is probably optimal.

Additionally, we can make better use of the feedback_discarded event.
The wp_presentation_feedback should not be destroyed here. It will be
taken care of either when we get feedback again or when the player
quits. Instead what we can do is set a bool that tells wayland_sync_swap
to update itself based on mp_time delta. In practice, the result is not
any different than before, but it should be more understandable what is
going on now.

Of course, the segfault mentioned at the beginning is fixed with this as
well.
2020-08-16 18:34:09 +00:00
..
decode options: make imgfmt options always accept "no" 2020-04-09 11:20:45 +02:00
filter draw_bmp: rewrite 2020-05-09 18:02:57 +02:00
out wayland: refactor presentation time 2020-08-16 18:34:09 +00:00
csputils.c vo_gpu: reinterpret SDR white levels based on ITU-R BT.2408 2020-06-15 01:24:04 +02:00
csputils.h vo_gpu: reinterpret SDR white levels based on ITU-R BT.2408 2020-06-15 01:24:04 +02:00
cuda.c video: cuda: add explicit context creation for copy hwaccels 2019-12-29 14:32:47 -08:00
d3d.c
d3d.h
fmt-conversion.c video: alias IMGFMT_RGB30 to AV_PIX_FMT_X2RGB10 2020-06-17 19:43:09 +02:00
fmt-conversion.h
hwdec.c video: cuda: add explicit context creation for copy hwaccels 2019-12-29 14:32:47 -08:00
hwdec.h video: cuda: add explicit context creation for copy hwaccels 2019-12-29 14:32:47 -08:00
image_loader.c
image_loader.h
image_writer.c video: clean up some imgfmt related stuff 2020-05-18 01:54:59 +02:00
image_writer.h
img_format.c video: some concessions to big endian hosts 2020-06-17 19:44:45 +02:00
img_format.h img_format: expose another helper 2020-05-21 02:29:05 +02:00
mp_image_pool.c
mp_image_pool.h
mp_image.c mp_image: add helper for clearing regions outside of a rectangle 2020-05-22 14:18:35 +02:00
mp_image.h mp_image: add helper for clearing regions outside of a rectangle 2020-05-22 14:18:35 +02:00
repack.c repack: handle endian in a more general way 2020-06-17 19:43:09 +02:00
repack.h repack: add support for converting from/to float formats 2020-05-09 18:02:57 +02:00
sws_utils.c sws_utils: do not mutate src/dst parameters 2020-07-08 22:45:12 +02:00
sws_utils.h sws_utils: allow setting zimg options directly 2020-05-09 18:02:57 +02:00
vaapi.c vaapi: correct broken NULL check 2020-06-03 15:12:08 +02:00
vaapi.h
vdpau_functions.inc
vdpau_mixer.c
vdpau_mixer.h
vdpau.c video: remove RGB32/BGR32 aliases 2020-05-11 19:57:34 +02:00
vdpau.h
zimg.c zimg: add slice threading and use it by default 2020-07-15 22:59:17 +02:00
zimg.h zimg: add slice threading and use it by default 2020-07-15 22:59:17 +02:00