head-management: add compositor-space-enabler-v1 extension
This commit is contained in:
parent
5636f6bda5
commit
51170cbde5
8 changed files with 78 additions and 3 deletions
|
|
@ -139,7 +139,6 @@ pub trait Connector: Any {
|
|||
fn damage(&self);
|
||||
fn drm_dev(&self) -> Option<DrmDeviceId>;
|
||||
fn effectively_locked(&self) -> bool;
|
||||
#[expect(dead_code)]
|
||||
fn caps(&self) -> ConnectorCaps {
|
||||
ConnectorCaps::none()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -103,6 +103,7 @@ impl HeadState {
|
|||
|
||||
enum HeadOp {
|
||||
SetPosition(i32, i32),
|
||||
SetConnectorEnabled(bool),
|
||||
SetTransform(Transform),
|
||||
SetScale(Scale),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -393,4 +393,5 @@ declare_extensions! {
|
|||
compositor_space_positioner_v1: CompositorSpacePositionerV1,
|
||||
compositor_space_transformer_v1: CompositorSpaceTransformerV1,
|
||||
compositor_space_scaler_v1: CompositorSpaceScalerV1,
|
||||
compositor_space_enabler_v1: CompositorSpaceEnablerV1,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
pub(super) mod jay_head_ext_compositor_space_enabler_v1;
|
||||
pub(super) mod jay_head_ext_compositor_space_info_v1;
|
||||
pub(super) mod jay_head_ext_compositor_space_positioner_v1;
|
||||
pub(super) mod jay_head_ext_compositor_space_scaler_v1;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,49 @@
|
|||
use {
|
||||
crate::{
|
||||
backend::CONCAP_CONNECTOR,
|
||||
ifs::head_management::{HeadCommon, HeadOp},
|
||||
state::ConnectorData,
|
||||
wire::{
|
||||
jay_head_ext_compositor_space_enabler_v1::{
|
||||
Disable, Enable, JayHeadExtCompositorSpaceEnablerV1RequestHandler,
|
||||
},
|
||||
jay_head_manager_ext_compositor_space_enabler_v1::JayHeadManagerExtCompositorSpaceEnablerV1RequestHandler,
|
||||
},
|
||||
},
|
||||
std::rc::Rc,
|
||||
};
|
||||
|
||||
impl_compositor_space_enabler_v1! {
|
||||
version = 1,
|
||||
filter = filter,
|
||||
}
|
||||
|
||||
impl MgrName {
|
||||
fn filter(&self, connector: &ConnectorData, _common: &Rc<HeadCommon>) -> bool {
|
||||
connector.connector.caps().contains(CONCAP_CONNECTOR)
|
||||
}
|
||||
}
|
||||
|
||||
impl JayHeadManagerExtCompositorSpaceEnablerV1RequestHandler for MgrName {
|
||||
type Error = ErrorName;
|
||||
|
||||
mgr_common_req!();
|
||||
}
|
||||
|
||||
impl JayHeadExtCompositorSpaceEnablerV1RequestHandler for HeadName {
|
||||
type Error = ErrorName;
|
||||
|
||||
head_common_req!();
|
||||
|
||||
fn enable(&self, _req: Enable, _slf: &Rc<Self>) -> Result<(), Self::Error> {
|
||||
self.common.push_op(HeadOp::SetConnectorEnabled(true))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn disable(&self, _req: Disable, _slf: &Rc<Self>) -> Result<(), Self::Error> {
|
||||
self.common.push_op(HeadOp::SetConnectorEnabled(false))?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
error!();
|
||||
|
|
@ -262,8 +262,8 @@ impl JayHeadManagerSessionV1 {
|
|||
return Err(HeadTransactionError::HeadRemoved(head.common.id));
|
||||
};
|
||||
let old = connector.state.get();
|
||||
#[expect(unused_mut)]
|
||||
let mut new = old;
|
||||
new.enabled = desired.connector_enabled;
|
||||
if old == new {
|
||||
continue;
|
||||
}
|
||||
|
|
@ -385,7 +385,6 @@ impl JayHeadManagerSessionV1RequestHandler for JayHeadManagerSessionV1 {
|
|||
}
|
||||
for head in self.heads.lock().values() {
|
||||
let pending = mem::take(&mut *head.common.pending.borrow_mut());
|
||||
#[expect(unused_variables)]
|
||||
let snapshot = &*head.common.snapshot_state.borrow();
|
||||
let state = &mut *head.common.transaction_state.borrow_mut();
|
||||
let mut to_send = ToSend::default();
|
||||
|
|
@ -395,6 +394,13 @@ impl JayHeadManagerSessionV1RequestHandler for JayHeadManagerSessionV1 {
|
|||
state.position = (x, y);
|
||||
to_send |= COMPOSITOR_SPACE_INFO_POS;
|
||||
}
|
||||
HeadOp::SetConnectorEnabled(enabled) => {
|
||||
state.connector_enabled = enabled;
|
||||
state.update_in_compositor_space(snapshot.wl_output);
|
||||
to_send |= COMPOSITOR_SPACE_INFO_FULL;
|
||||
to_send |= COMPOSITOR_SPACE_INFO_ENABLED;
|
||||
to_send |= CORE_INFO;
|
||||
}
|
||||
HeadOp::SetTransform(t) => {
|
||||
state.transform = t;
|
||||
state.update_size();
|
||||
|
|
|
|||
11
wire/jay_head_ext_compositor_space_enabler_v1.txt
Normal file
11
wire/jay_head_ext_compositor_space_enabler_v1.txt
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
request destroy (destructor) {
|
||||
|
||||
}
|
||||
|
||||
request enable {
|
||||
|
||||
}
|
||||
|
||||
request disable {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
request destroy (destructor) {
|
||||
|
||||
}
|
||||
|
||||
event head {
|
||||
head: id(jay_head_ext_compositor_space_enabler_v1) (new),
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue