summaryrefslogtreecommitdiffstats
path: root/video/out/wayland_common.c
diff options
context:
space:
mode:
authordudemanguy <random342@airmail.cc>2020-01-30 11:19:22 -0600
committerDudemanguy <random342@airmail.cc>2020-01-31 00:40:44 +0000
commitb926f189388918e623ebda65d6a47a7ab00b9cfc (patch)
tree8f808c4ce6cd17913d011486860ad8272b7c3d6a /video/out/wayland_common.c
parent6c2cc20a53618d3de90674d15c737586a041424b (diff)
downloadmpv-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.c6
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()) {