term: shutdown: handle *not* being unmapped

When we're shutting down a terminal, we destroy our Wayland window,
and assume that will unmap us.

There are cases when this isn't true (most likely when e.g. a screen
locker is active, and the unmap is being deferred).

Handle by explicitly setting focused to NULL.
This commit is contained in:
Daniel Eklöf 2019-11-21 18:18:35 +01:00
parent 8c945c9832
commit ee45c48deb
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -590,6 +590,20 @@ fdm_shutdown(struct fdm *fdm, int fd, int events, void *data)
term->window = NULL;
struct wayland *wayl __attribute__((unused)) = term->wl;
/*
* Normally we'd get unmapped when we destroy the Wayland
* above.
*
* However, it appears that under certain conditions, those events
* are deferred (for example, when a screen locker is active), and
* thus we can get here without having been unmapped.
*/
if (wayl->focused == term)
wayl->focused = NULL;
if (wayl->moused == term)
wayl->moused = NULL;
assert(wayl->focused != term);
assert(wayl->moused != term);