diff --git a/src/ifs/head_management.rs b/src/ifs/head_management.rs index 0821b065..750b48b8 100644 --- a/src/ifs/head_management.rs +++ b/src/ifs/head_management.rs @@ -18,7 +18,7 @@ use { wire::JayHeadManagerSessionV1Id, }, std::{ - cell::{Cell, RefCell}, + cell::{Cell, Ref, RefCell}, rc::Rc, }, thiserror::Error, @@ -94,6 +94,17 @@ pub struct HeadState { pub brightness: Option, } +pub struct ReadOnlyHeadState { + state: Rc>, +} + +impl ReadOnlyHeadState { + #[expect(dead_code)] + pub fn borrow(&self) -> Ref<'_, HeadState> { + self.state.borrow() + } +} + impl HeadState { fn update_in_compositor_space(&mut self, wl_output: Option) { self.in_compositor_space = false; @@ -218,6 +229,13 @@ impl HeadManagers { } } + #[expect(dead_code)] + pub fn state(&self) -> ReadOnlyHeadState { + ReadOnlyHeadState { + state: self.state.clone(), + } + } + pub fn handle_removed(&self) { for head in self.managers.lock().drain_values() { skip_in_transaction!(head);