diff options
author | Dudemanguy <random342@airmail.cc> | 2021-04-25 11:40:49 -0500 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2021-04-26 00:54:26 +0000 |
commit | 61a387ac952d8334f26dd2d2efe150bcdcbbaafa (patch) | |
tree | 1a9aa99a38434a1ac93a37f3f4d7edeafc65d401 /video/out/wayland_common.c | |
parent | c1568a3a6c61252d5fc003602f00c0264a196822 (diff) | |
download | mpv-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.c | 4 |
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; |