diff options
author | Dudemanguy911 <random342@airmail.cc> | 2019-10-20 12:46:42 -0500 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2019-10-20 19:50:10 +0000 |
commit | 9dead2b932e13be6e25cdff20294fbb9e616d69c (patch) | |
tree | 063608c335b43ef430877bb7e647ca1beff71500 /video/out/wayland_common.c | |
parent | 525e712757c8cc5c61f3eeb23234f9264fcb8a2c (diff) | |
download | mpv-9dead2b932e13be6e25cdff20294fbb9e616d69c.tar.bz2 mpv-9dead2b932e13be6e25cdff20294fbb9e616d69c.tar.xz |
wayland: fix presentation time
There's 2 stupid things here that need to be fixed. First of all,
vulkan wasn't actually using presentation time because somehow the
get_vsync function in context.c disappeared. Secondly, if the mpv window
was hidden it was updating the ust time based on the refresh_usec but
really it should simply just not feed any information to the vsync info
structure. So this adds some logic to assume whether or not a window is
hidden.
Diffstat (limited to 'video/out/wayland_common.c')
-rw-r--r-- | video/out/wayland_common.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c index 0b749a526d..81ef768b61 100644 --- a/video/out/wayland_common.c +++ b/video/out/wayland_common.c @@ -1552,6 +1552,16 @@ void vo_wayland_wait_frame(struct vo_wayland_state *wl, int frame_offset) wl_display_read_events(wl->display); wl_display_dispatch_pending(wl->display); } + + if (wl->frame_wait) { + wl->timeout_count += 1; + } else { + wl->timeout_count = 0; + wl->hidden = false; + } + + if (wl->timeout_count > wl->current_output->refresh_rate) + wl->hidden = true; } void vo_wayland_wait_events(struct vo *vo, int64_t until_time_us) |