Initial support for idle notify and idle ihibit
This commit is contained in:
parent
c4fc91d6e9
commit
19ba568f02
6 changed files with 85 additions and 3 deletions
|
|
@ -15,8 +15,8 @@ use keyframe::{ease, functions::EaseInOutCubic};
|
|||
use smithay::{
|
||||
backend::input::TouchSlot,
|
||||
desktop::{
|
||||
layer_map_for_output, space::SpaceElement, LayerSurface, PopupKind, WindowSurface,
|
||||
WindowSurfaceType,
|
||||
layer_map_for_output, space::SpaceElement, utils::surface_primary_scanout_output,
|
||||
LayerSurface, PopupKind, WindowSurface, WindowSurfaceType,
|
||||
},
|
||||
input::{
|
||||
pointer::{Focus, GrabStartData as PointerGrabStartData},
|
||||
|
|
@ -1105,6 +1105,18 @@ impl Common {
|
|||
);
|
||||
self.popups.cleanup();
|
||||
self.toplevel_info_state.refresh(&self.workspace_state);
|
||||
self.refresh_idle_inhibit();
|
||||
}
|
||||
|
||||
pub fn refresh_idle_inhibit(&mut self) {
|
||||
self.idle_inhibiting_surfaces.retain(|s| s.alive());
|
||||
|
||||
let is_inhibited = self.idle_inhibiting_surfaces.iter().any(|surface| {
|
||||
with_states(surface, |states| {
|
||||
surface_primary_scanout_output(surface, states).is_some()
|
||||
})
|
||||
});
|
||||
self.idle_notifier_state.set_is_inhibited(is_inhibited);
|
||||
}
|
||||
|
||||
pub fn on_commit(&mut self, surface: &WlSurface) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue