Skip to content

Commit

Permalink
wayland: avoid doing unneccesary window resizes
Browse files Browse the repository at this point in the history
Commits 04018c3
cd7a7a1 introduced behavior that
updated window geometry during wayland events (specifically surface and
output). This is good but they also are too aggressive with
automatically resizing. For example, if a window is manually resized by
the user and then dragged to a different monitor with different geometry
than the initial monitor, mpv will automatically resize itself to the
window's resolution. The initial thought behind this logic was for
autofit to automatically readjust itself on a new monitor, but doing
that breaks other common use cases. An attempt could be made to
distinguish between autofit and a manual resize but that introduces a
lot of complexity for an edge case. It's better to simply not change the
window geometry here. Internal values are recalculated and scaled of
course, but wl->window_size and wl->geometry should not change.
  • Loading branch information
Dudemanguy authored and sfan5 committed Dec 27, 2021
1 parent 80c03b4 commit f47a055
Showing 1 changed file with 0 additions and 7 deletions.
7 changes: 0 additions & 7 deletions video/out/wayland_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -653,9 +653,6 @@ static void output_handle_done(void* data, struct wl_output *wl_output)
}
spawn_cursor(wl);
set_geometry(wl);
wl->window_size = wl->vdparams;
if (!wl->vo_opts->fullscreen && !wl->vo_opts->window_maximized)
wl->geometry = wl->window_size;
wl->pending_vo_events |= VO_EVENT_DPI;
wl->pending_vo_events |= VO_EVENT_RESIZE;
}
Expand Down Expand Up @@ -716,13 +713,9 @@ static void surface_handle_enter(void *data, struct wl_surface *wl_surface,

if (!mp_rect_equals(&old_output_geometry, &wl->current_output->geometry)) {
set_geometry(wl);
wl->window_size = wl->vdparams;
force_resize = true;
}

if (!wl->vo_opts->fullscreen && !wl->vo_opts->window_maximized)
wl->geometry = wl->window_size;

if (!mp_rect_equals(&old_geometry, &wl->geometry) || force_resize)
wl->pending_vo_events |= VO_EVENT_RESIZE;

Expand Down

0 comments on commit f47a055

Please sign in to comment.