1
0
Fork 0
forked from wry/wry

all: implement output transforms

This commit is contained in:
Julian Orth 2024-02-27 23:32:40 +01:00
parent 79df8d69f4
commit b7d2964e19
20 changed files with 254 additions and 71 deletions

View file

@ -15,7 +15,7 @@ use {
timer::Timer,
video::{
connector_type::{ConnectorType, CON_UNKNOWN},
Connector, DrmDevice, GfxApi, Mode,
Connector, DrmDevice, GfxApi, Mode, Transform,
},
Axis, Direction, ModifiedKeySym, PciId, Workspace,
},
@ -473,6 +473,13 @@ impl Client {
self.send(&ClientMessage::ConnectorSetEnabled { connector, enabled });
}
pub fn connector_set_transform(&self, connector: Connector, transform: Transform) {
self.send(&ClientMessage::ConnectorSetTransform {
connector,
transform,
});
}
pub fn device_connectors(&self, device: DrmDevice) -> Vec<Connector> {
let res = self.send_with_response(&ClientMessage::GetDeviceConnectors { device });
get_response!(res, vec![], GetDeviceConnectors { connectors });

View file

@ -5,7 +5,7 @@ use {
logging::LogLevel,
theme::{colors::Colorable, sized::Resizable, Color},
timer::Timer,
video::{connector_type::ConnectorType, Connector, DrmDevice, GfxApi},
video::{connector_type::ConnectorType, Connector, DrmDevice, GfxApi, Transform},
Axis, Direction, PciId, Workspace,
},
serde::{Deserialize, Serialize},
@ -342,6 +342,10 @@ pub enum ClientMessage<'a> {
device: Option<DrmDevice>,
enabled: bool,
},
ConnectorSetTransform {
connector: Connector,
transform: Transform,
},
}
#[derive(Serialize, Deserialize, Debug)]

View file

@ -158,6 +158,15 @@ impl Connector {
}
get!().connector_set_enabled(self, enabled);
}
/// Sets the transformation to apply to the content of this connector.
pub fn set_transform(self, transform: Transform) {
if !self.exists() {
log::warn!("set_transform called on a connector that does not exist");
return;
}
get!().connector_set_transform(self, transform);
}
}
/// Returns all available DRM devices.