fix checking idle inhibit state

checking `bypass_surface_visibility` first, could cause that even if the idle
inhibitor is being destroyed it will disable idle tracking

and if we couldn't get its scene tree, then assume that the surface is visible
This commit is contained in:
Leonardo Hernández Hernández 2022-12-16 17:24:45 -06:00
parent 803a9ba98d
commit 7b1fe7e5f2
No known key found for this signature in database
GPG key ID: E538897EE11B9624

4
dwl.c
View file

@ -627,8 +627,8 @@ checkidleinhibitor(struct wlr_surface *exclude)
wl_list_for_each(inhibitor, &idle_inhibit_mgr->inhibitors, link) { wl_list_for_each(inhibitor, &idle_inhibit_mgr->inhibitors, link) {
struct wlr_surface *surface = wlr_surface_get_root_surface(inhibitor->surface); struct wlr_surface *surface = wlr_surface_get_root_surface(inhibitor->surface);
struct wlr_scene_tree *tree = surface->data; struct wlr_scene_tree *tree = surface->data;
if (bypass_surface_visibility || (exclude != surface if (exclude != surface && (bypass_surface_visibility || (!tree
&& tree && tree->node.enabled)) { || tree->node.enabled))) {
inhibited = 1; inhibited = 1;
break; break;
} }