From cbe190274e8efdf7537915851126dbd45d12b0c6 Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Sat, 7 Mar 2026 12:04:13 +0100 Subject: [PATCH] head-management: add ReadOnlyHeadState --- src/ifs/head_management.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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);