commit 3e33e1c76ff58154768a7789c946bd142f9f3dc2
parent 804aacb8c7657f5e806d1b605652c6b71d5ab800
Author: Brian Ashworth <bosrsf04@gmail.com>
Date: Mon, 12 Aug 2019 02:28:49 -0400
handle_seat_node_destroy: do not focus own node
In handle_seat_node_destroy, it was possible to focus the node attached
to the seat node that is being destroyed when an empty workspace was
being destroyed in a multiple seat environment. This resulted in
infinite recursion when attempting to destroy the workspace. This just
moves the seat node destruction higher so it cannot be the focus
inactive for the seat. This is the same ordering that is applied to
destruction of seat nodes for containers
Diffstat:
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sway/input/seat.c b/sway/input/seat.c
@@ -153,6 +153,7 @@ static void handle_seat_node_destroy(struct wl_listener *listener, void *data) {
struct sway_node *focus = seat_get_focus(seat);
if (node->type == N_WORKSPACE) {
+ seat_node_destroy(seat_node);
// If an unmanaged or layer surface is focused when an output gets
// disabled and an empty workspace on the output was focused by the
// seat, the seat needs to refocus it's focus inactive to update the
@@ -166,7 +167,6 @@ static void handle_seat_node_destroy(struct wl_listener *listener, void *data) {
seat->workspace = NULL;
}
}
- seat_node_destroy(seat_node);
return;
}