From 61a387ac952d8334f26dd2d2efe150bcdcbbaafa Mon Sep 17 00:00:00 2001 From: Dudemanguy Date: Sun, 25 Apr 2021 11:40:49 -0500 Subject: wayland: ignore toplevel listener if geometry is 0 It turns out that if a user specifies fullscreen=yes and a width/height in an autoprofile, the compositor can execute its toplevel listener event. This can happen before we have any mpv window rendered at all so we end up performing a bunch of geometry operations and state checks when we shouldn't. It subtly messes up a lot of things like state detection. Just return from this function if the geometry has no width or height yet. --- video/out/wayland_common.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'video/out/wayland_common.c') diff --git a/video/out/wayland_common.c b/video/out/wayland_common.c index 3567a90add..94e839ef34 100644 --- a/video/out/wayland_common.c +++ b/video/out/wayland_common.c @@ -1121,6 +1121,10 @@ static void handle_toplevel_config(void *data, struct xdg_toplevel *toplevel, struct mp_vo_opts *vo_opts = wl->vo_opts; struct mp_rect old_geometry = wl->geometry; + /* Don't do anything here if we haven't finished setting geometry. */ + if (mp_rect_w(wl->geometry) == 0 || mp_rect_h(wl->geometry) == 0) + return; + bool is_maximized = false; bool is_fullscreen = false; bool is_activated = false; -- cgit v1.2.3