1
0
mirror of https://github.com/mpv-player/mpv synced 2025-02-21 23:36:58 +00:00
mpv/video/out
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
..
cocoa cocoa_common: remove deprecated VOCTRLs/VO_EVENTs 2019-12-12 19:56:03 +01:00
cocoa-cb cocoa-cb: fix unfs window size when toggling out of fullscreen 2020-07-12 12:06:56 +02:00
d3d11 vo_gpu: d3d11: only use presentation feedback with flip model 2020-05-07 00:17:50 +10:00
gpu vo_gpu: clip highlights before tone-mapping 2020-07-19 08:07:48 +02:00
hwdec vo_gpu: hwdec_vaapi: handle lack of object size with AMD drivers 2020-07-14 07:32:04 +02:00
opengl wayland: refactor presentation time 2020-08-16 18:34:09 +00:00
placebo vo_gpu: placebo: add fallback code for stride mismatch 2020-06-16 02:54:59 +02:00
vulkan wayland: refactor presentation time 2020-08-16 18:34:09 +00:00
win32 vo_gpu: win: remove exclusive-fullscreen detection hack 2017-12-20 14:53:41 +11:00
android_common.c options: change option macros and all option declarations 2020-03-18 19:52:01 +01:00
android_common.h context_android: move common code to a separate file 2019-09-27 00:05:06 +03:00
aspect.c options: add --video-scale-x/y 2020-06-03 17:26:44 +02:00
aspect.h aspect: change license to LGPL 2017-06-17 17:08:51 +02:00
bitmap_packer.c video/out/bitmap_packer: Avoid empty initializer list 2019-11-18 16:50:21 +01:00
bitmap_packer.h bitmap_packer: remove some unused functions 2016-07-01 20:29:45 +02:00
cocoa_cb_common.swift cocoa-cb: report actual unfs window size for current window scale 2020-04-25 11:37:53 +02:00
cocoa_common.h osx: change license of OSX and cocoa files to LGPL 2017-06-24 16:29:22 +02:00
cocoa_common.m build: change filenames of generated files 2020-06-04 16:59:05 +02:00
dither.c Change GPL/LGPL dual-licensed files to LGPL 2016-01-19 18:36:34 +01:00
dither.h
dr_helper.c client API: fix potential deadlock problems by throwing more shit at it 2019-09-26 14:14:49 +02:00
dr_helper.h client API: fix potential deadlock problems by throwing more shit at it 2019-09-26 14:14:49 +02:00
drm_atomic.c drm_atomic: do not set immutable properties 2020-02-02 18:01:55 +02:00
drm_atomic.h drm: rename plane options to better, invariant, names 2018-12-01 15:42:20 +02:00
drm_common.c drm_common: set frsig to a valid signal 2020-04-22 11:27:18 +02:00
drm_common.h drm: avoid division by 0 in drm_pflip_cb with bad drivers 2019-12-07 18:34:25 +01:00
drm_prime.c drm_prime: fallback to drmModeAddFB2 2020-05-08 21:26:25 +02:00
drm_prime.h drm_prime: double free bug 2020-03-05 18:12:57 +01:00
filter_kernels.c vo_opengl: refactor scaler LUT weight packing/loading 2017-09-04 13:53:14 +02:00
filter_kernels.h vo_opengl: refactor scaler LUT weight packing/loading 2017-09-04 13:53:14 +02:00
libmpv_sw.c client API: add software rendering API 2020-07-08 22:42:05 +02:00
libmpv.h client API: add software rendering API 2020-07-08 22:42:05 +02:00
vo_caca.c vo_caca: Implement VOCTRL_UPDATE_WINDOW_TITLE 2019-10-29 17:07:41 +01:00
vo_direct3d.c vo_direct3d: dumb down OSD rendering 2020-05-13 23:16:32 +02:00
vo_drm.c vo_wlshm, vo_drm: set image size with mp_image_set_size 2020-05-17 12:53:26 +02:00
vo_gpu.c options: change option macros and all option declarations 2020-03-18 19:52:01 +01:00
vo_image.c options: change option macros and all option declarations 2020-03-18 19:52:01 +01:00
vo_lavc.c encode: get rid of the output packet queue 2018-05-03 01:08:44 +03:00
vo_libmpv.c client API: add software rendering API 2020-07-08 22:42:05 +02:00
vo_mediacodec_embed.c vo_mediacodec_embed: fix forgotten VO_CAP_NOREDRAW→VO_CAP_NORETAIN 2018-02-20 01:59:20 +02:00
vo_null.c options: change option macros and all option declarations 2020-03-18 19:52:01 +01:00
vo_rpi.c rpi: use "brcm" variant of libGLESv2 2020-04-23 14:05:32 +02:00
vo_sdl.c options: change option macros and all option declarations 2020-03-18 19:52:01 +01:00
vo_tct.c video/out/vo_tct: query terminal size generically 2020-04-23 23:25:41 +03:00
vo_vaapi.c draw_bmp: use command line options for any used scalers 2020-05-13 20:07:59 +02:00
vo_vdpau.c options: change option macros and all option declarations 2020-03-18 19:52:01 +01:00
vo_wlshm.c vo_wlshm, vo_drm: set image size with mp_image_set_size 2020-05-17 12:53:26 +02:00
vo_x11.c vo_x11: partially restore operation on bad endian systems 2020-06-17 19:44:50 +02:00
vo_xv.c options: change option macros and all option declarations 2020-03-18 19:52:01 +01:00
vo.c Warn if on GNOME 2020-07-07 21:22:19 +02:00
vo.h video: remove another redundant wakeup 2020-04-10 01:33:38 +02:00
w32_common.c w32_common: Scale window when moving to display with different DPI 2020-05-08 21:47:32 +10:00
w32_common.h w32_common, w32_keyboard: change license to LGPL 2017-06-24 12:54:45 +02:00
wayland_common.c wayland: refactor presentation time 2020-08-16 18:34:09 +00:00
wayland_common.h wayland: refactor presentation time 2020-08-16 18:34:09 +00:00
win_state.c win_state: silence a valgrind warning 2019-09-19 20:37:05 +02:00
win_state.h x11: pseudo HiDPI scaling 2017-01-19 16:31:54 +01:00
x11_common.c x11: add option to make window appear on a specific workspace 2020-07-12 00:12:55 +02:00
x11_common.h x11: remove terrible xdg-screensaver hack 2020-07-08 22:45:07 +02:00