diff options
author | dudemanguy <random342@airmail.cc> | 2020-01-30 11:19:22 -0600 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2020-01-31 00:40:44 +0000 |
commit | b926f189388918e623ebda65d6a47a7ab00b9cfc (patch) | |
tree | 8f808c4ce6cd17913d011486860ad8272b7c3d6a /video/out/wayland_common.c | |
parent | 6c2cc20a53618d3de90674d15c737586a041424b (diff) | |
download | mpv-b926f189388918e623ebda65d6a47a7ab00b9cfc.tar.bz2 mpv-b926f189388918e623ebda65d6a47a7ab00b9cfc.tar.xz |
wayland: remove wayland-frame-wait-offset option
This originally existed as a hack for weston. In certain scenarios, a
frame taking too long to render would cause vo_wayland_wait_frame to
timeout which would result in a ton of dropped frames. The naive
solution was to just to add a slight delay to the time value. If a
frame took too long, it would likely to fall under the timeout value and
all was well. This was exposed to the user since the default delay
(1000) was completely arbitrary.
However with presentation time, this doesn't appear to be neccesary.
Fresh frames that take longer than the display's refresh rate (16.666 ms
in most cases) behave well in Weston. In the other two main compositors
without presentation time (GNOME and Plasma), they also do not
experience any ill effects. It's better not to overcomplicate things, so
this "feature" can be removed now.
Diffstat (limited to 'video/out/wayland_common.c')
-rw-r--r-- | video/out/wayland_common.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c index 01a44e8abe..6df646739f 100644 --- a/video/out/wayland_common.c +++ b/video/out/wayland_common.c @@ -45,7 +45,6 @@ #define OPT_BASE_STRUCT struct wayland_opts const struct m_sub_options wayland_conf = { .opts = (const struct m_option[]) { - OPT_INTRANGE("wayland-frame-wait-offset", frame_offset, 0, -500, 3000), OPT_FLAG("wayland-disable-vsync", disable_vsync, 0), OPT_INTRANGE("wayland-edge-pixels-pointer", edge_pixels_pointer, 10, 0, INT_MAX), OPT_INTRANGE("wayland-edge-pixels-touch", edge_pixels_touch, 64, 0, INT_MAX), @@ -53,7 +52,6 @@ const struct m_sub_options wayland_conf = { }, .size = sizeof(struct wayland_opts), .defaults = &(struct wayland_opts) { - .frame_offset = 1000, .disable_vsync = false, .edge_pixels_pointer = 10, .edge_pixels_touch = 64, @@ -1587,14 +1585,14 @@ void vo_wayland_wakeup(struct vo *vo) (void)write(wl->wakeup_pipe[1], &(char){0}, 1); } -void vo_wayland_wait_frame(struct vo_wayland_state *wl, int frame_offset) +void vo_wayland_wait_frame(struct vo_wayland_state *wl) { struct pollfd fds[1] = { {.fd = wl->display_fd, .events = POLLIN }, }; double vblank_time = 1e6 / wl->current_output->refresh_rate; - int64_t finish_time = mp_time_us() + vblank_time + (int64_t)frame_offset; + int64_t finish_time = mp_time_us() + vblank_time; while (wl->frame_wait && finish_time > mp_time_us()) { |