diff options
author | Raphael Robatsch <raphael-git@tapesoftware.net> | 2021-11-13 17:22:52 +0100 |
---|---|---|
committer | Leonardo Hernandez Hernandez <leohdz172@protonmail.com> | 2021-11-13 22:19:55 -0600 |
commit | 03e167dbb70fbc967e310f95200bcd63f43cac72 (patch) | |
tree | ede682b8748adf71881d46f69279d98821e3dd8b | |
parent | 2d9740c2fc481d42eb0deace797553172cc234d9 (diff) |
fullscreennotify: don't crash if called before map
SDL2 calls xdg_toplevel.unset_fullscreen() before the surface is
mapped. This causes a segfault in dwl because setfullscreen() expects
the surface to be mapped already.
Therefore, delay the setfullscreen call until the surface is mapped.
-rw-r--r-- | dwl.c | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -1042,7 +1042,13 @@ void fullscreennotify(struct wl_listener *listener, void *data) { Client *c = wl_container_of(listener, c, fullscreen); - setfullscreen(c, !c->isfullscreen); + struct wlr_xdg_toplevel_set_fullscreen_event *event = data; + if (!c->mon) { + /* if the client is not mapped yet, let mapnotify() call setfullscreen() */ + c->isfullscreen = event->fullscreen; + return; + } + setfullscreen(c, event->fullscreen); } Monitor * @@ -1316,6 +1322,9 @@ mapnotify(struct wl_listener *listener, void *data) /* Set initial monitor, tags, floating status, and focus */ applyrules(c); + + if (c->isfullscreen) + setfullscreen(c, 1); } void |