aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2019-04-02 11:51:46 -0400
committerFurkan Sahin <furkan-dev@proton.me>2019-04-02 11:51:46 -0400
commit4bd03cc65411d7b8702f7d8694f77c5c901dfa96 (patch)
treec4160f97439e2264a2040e6d41e0d39c9e8822dc
parentec9d7288874b9fe74e7a0ca0eabbb90d01416c3d (diff)
idle_inhibit: fix crash during view destruction
This fixes a crash for application set idle inhibitors when their associated view is being destroyed. There is a call to `view_is_visible` to determine is the view is visible and it assumes that the view has an container, but it is possible for the container to already have been destroyed at this point. There is a NULL check for the view in `check_active` and this re-adds the NULL check for the container that I accidentally dropped when refactoring during the inhibit_idle command PR
-rw-r--r--sway/desktop/idle_inhibit_v1.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sway/desktop/idle_inhibit_v1.c b/sway/desktop/idle_inhibit_v1.c
index b981e5e5..73e46a8f 100644
--- a/sway/desktop/idle_inhibit_v1.c
+++ b/sway/desktop/idle_inhibit_v1.c
@@ -93,7 +93,8 @@ static bool check_active(struct sway_idle_inhibitor_v1 *inhibitor) {
switch (inhibitor->mode) {
case INHIBIT_IDLE_APPLICATION:
// If there is no view associated with the inhibitor, assume visible
- return !inhibitor->view || view_is_visible(inhibitor->view);
+ return !inhibitor->view || !inhibitor->view->container ||
+ view_is_visible(inhibitor->view);
case INHIBIT_IDLE_FOCUS:;
struct sway_seat *seat = NULL;
wl_list_for_each(seat, &server.input->seats, link) {