aboutsummaryrefslogtreecommitdiffstats
path: root/sway/desktop/idle_inhibit_v1.c
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2019-04-02 11:51:46 -0400
committerLibravatar emersion <contact@emersion.fr>2019-04-03 19:46:08 +0300
commit0ad905f23cc2862c96401b6a27d918b237db35b5 (patch)
treec4160f97439e2264a2040e6d41e0d39c9e8822dc /sway/desktop/idle_inhibit_v1.c
parentroot_scratchpad_hide: fix crash when layer focused (diff)
downloadsway-0ad905f23cc2862c96401b6a27d918b237db35b5.tar.gz
sway-0ad905f23cc2862c96401b6a27d918b237db35b5.tar.zst
sway-0ad905f23cc2862c96401b6a27d918b237db35b5.zip
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
Diffstat (limited to 'sway/desktop/idle_inhibit_v1.c')
-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) {
93 switch (inhibitor->mode) { 93 switch (inhibitor->mode) {
94 case INHIBIT_IDLE_APPLICATION: 94 case INHIBIT_IDLE_APPLICATION:
95 // If there is no view associated with the inhibitor, assume visible 95 // If there is no view associated with the inhibitor, assume visible
96 return !inhibitor->view || view_is_visible(inhibitor->view); 96 return !inhibitor->view || !inhibitor->view->container ||
97 view_is_visible(inhibitor->view);
97 case INHIBIT_IDLE_FOCUS:; 98 case INHIBIT_IDLE_FOCUS:;
98 struct sway_seat *seat = NULL; 99 struct sway_seat *seat = NULL;
99 wl_list_for_each(seat, &server.input->seats, link) { 100 wl_list_for_each(seat, &server.input->seats, link) {