wayland_protocols_async/zwlr_output_management_v1/output/
output_manager.rs1use wayland_client::{Dispatch, Connection, QueueHandle, Proxy};
2use wayland_protocols_wlr::output_management::v1::client::{zwlr_output_manager_v1::{ZwlrOutputManagerV1, self}, zwlr_output_head_v1::ZwlrOutputHeadV1};
3
4use crate::zwlr_output_management_v1::{handler::{OutputManagementEvent, OutputManagementState}, output::output_head::WlOutputHead};
5
6impl Dispatch<ZwlrOutputManagerV1, ()> for OutputManagementState {
7 fn event(
8 state: &mut Self,
9 _: &ZwlrOutputManagerV1,
10 event: <ZwlrOutputManagerV1 as wayland_client::Proxy>::Event,
11 _: &(),
12 _: &Connection,
13 _: &QueueHandle<Self>,
14 ) {
15 match event {
16 zwlr_output_manager_v1::Event::Head { head } => {
17 let head_id = head.clone().id();
18 state.output_heads.insert(head.id(), WlOutputHead::new(head));
19 state.dispatch_event(OutputManagementEvent::Head { id: head_id });
20 },
21 zwlr_output_manager_v1::Event::Done { serial } => {
22 state.output_manager_serial = Some(serial);
23 state.dispatch_event(OutputManagementEvent::Done { serial });
24 },
25 zwlr_output_manager_v1::Event::Finished => {
26 state.output_manager_serial = None;
27 state.dispatch_event(OutputManagementEvent::Finished);
28 },
29 _ => {},
30 }
31 }
32
33 wayland_client::event_created_child!(Self, ZwlrOutputManagerV1, [
34 EVT_HEAD_OPCODE=> (ZwlrOutputHeadV1, ()),
35 ]);
36}