control-center: add outputs pane
This commit is contained in:
parent
dee142b3bb
commit
d328655f8b
13 changed files with 1775 additions and 36 deletions
|
|
@ -4,6 +4,7 @@ use {
|
|||
BackendConnectorState, BackendConnectorStateSerial, Connector, ConnectorEvent,
|
||||
ConnectorId, MonitorInfo,
|
||||
},
|
||||
control_center::CCI_OUTPUTS,
|
||||
format::XRGB8888,
|
||||
globals::GlobalName,
|
||||
ifs::{
|
||||
|
|
@ -108,6 +109,7 @@ pub fn handle(state: &Rc<State>, connector: &Rc<dyn Connector>) {
|
|||
for mgr in state.head_managers.lock().values() {
|
||||
mgr.announce(&data);
|
||||
}
|
||||
state.trigger_cci(CCI_OUTPUTS);
|
||||
if state.connectors.set(id, data).is_some() {
|
||||
panic!("Connector id has been reused");
|
||||
}
|
||||
|
|
@ -147,6 +149,7 @@ impl ConnectorHandler {
|
|||
self.data.handler.set(None);
|
||||
self.state.connectors.remove(&self.id);
|
||||
self.data.head_managers.handle_removed();
|
||||
self.state.trigger_cci(CCI_OUTPUTS);
|
||||
}
|
||||
|
||||
async fn handle_connected(&self, info: MonitorInfo) {
|
||||
|
|
@ -162,6 +165,7 @@ impl ConnectorHandler {
|
|||
}
|
||||
self.data.connected.set(false);
|
||||
self.data.head_managers.handle_output_disconnected();
|
||||
self.state.trigger_cci(CCI_OUTPUTS);
|
||||
for head in self.data.wlr_output_heads.lock().drain_values() {
|
||||
head.handle_disconnected();
|
||||
}
|
||||
|
|
@ -213,12 +217,7 @@ impl ConnectorHandler {
|
|||
info.primaries,
|
||||
info.luminance,
|
||||
));
|
||||
let schedule = Rc::new(OutputSchedule::new(
|
||||
&self.state.ring,
|
||||
&self.state.eng,
|
||||
&self.data,
|
||||
&desired_state,
|
||||
));
|
||||
let schedule = Rc::new(OutputSchedule::new(&self.state, &self.data, &desired_state));
|
||||
let _schedule = self
|
||||
.state
|
||||
.eng
|
||||
|
|
@ -341,6 +340,7 @@ impl ConnectorHandler {
|
|||
self.data
|
||||
.head_managers
|
||||
.handle_output_connected(&output_data);
|
||||
self.state.trigger_cci(CCI_OUTPUTS);
|
||||
self.state.wlr_output_managers.announce_head(&output_data);
|
||||
'outer: loop {
|
||||
while let Some(event) = self.data.connector.event() {
|
||||
|
|
@ -353,6 +353,7 @@ impl ConnectorHandler {
|
|||
}
|
||||
ConnectorEvent::FormatsChanged(formats) => {
|
||||
self.data.head_managers.handle_formats_change(&formats);
|
||||
self.state.trigger_cci(CCI_OUTPUTS);
|
||||
on.global.formats.set(formats);
|
||||
}
|
||||
ConnectorEvent::State(state) => {
|
||||
|
|
@ -466,6 +467,7 @@ impl ConnectorHandler {
|
|||
self.data
|
||||
.head_managers
|
||||
.handle_output_connected(&output_data);
|
||||
self.state.trigger_cci(CCI_OUTPUTS);
|
||||
self.state.wlr_output_managers.announce_head(&output_data);
|
||||
'outer: loop {
|
||||
while let Some(event) = self.data.connector.event() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue