summaryrefslogtreecommitdiffstats
path: root/video/out/wayland_common.c
diff options
context:
space:
mode:
authorDudemanguy <random342@airmail.cc>2021-04-25 11:40:49 -0500
committerDudemanguy <random342@airmail.cc>2021-04-26 00:54:26 +0000
commit61a387ac952d8334f26dd2d2efe150bcdcbbaafa (patch)
tree1a9aa99a38434a1ac93a37f3f4d7edeafc65d401 /video/out/wayland_common.c
parentc1568a3a6c61252d5fc003602f00c0264a196822 (diff)
downloadmpv-61a387ac952d8334f26dd2d2efe150bcdcbbaafa.tar.bz2
mpv-61a387ac952d8334f26dd2d2efe150bcdcbbaafa.tar.xz
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.
Diffstat (limited to 'video/out/wayland_common.c')
-rw-r--r--video/out/wayland_common.c4
1 files changed, 4 insertions, 0 deletions
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;