head-management: add infrastructure
This commit is contained in:
parent
078c59d730
commit
8356dd5d5c
28 changed files with 1791 additions and 21 deletions
|
|
@ -29,6 +29,9 @@ use {
|
|||
format::XRGB8888,
|
||||
globals::Globals,
|
||||
ifs::{
|
||||
head_management::{
|
||||
HeadManagers, HeadState, jay_head_manager_session_v1::handle_jay_head_manager_done,
|
||||
},
|
||||
jay_screencast::{perform_screencast_realloc, perform_toplevel_screencasts},
|
||||
wl_output::{OutputId, PersistentOutputState, WlOutputGlobal},
|
||||
wl_seat::handle_position_hint_requests,
|
||||
|
|
@ -62,6 +65,7 @@ use {
|
|||
numcell::NumCell,
|
||||
oserror::OsError,
|
||||
queue::AsyncQueue,
|
||||
rc_eq::RcEq,
|
||||
refcounted::RefCounted,
|
||||
run_toplevel::RunToplevel,
|
||||
tri::Try,
|
||||
|
|
@ -339,6 +343,9 @@ fn start_compositor2(
|
|||
node_at_tree: Default::default(),
|
||||
position_hint_requests: Default::default(),
|
||||
backend_connector_state_serials: Default::default(),
|
||||
head_names: Default::default(),
|
||||
head_managers: Default::default(),
|
||||
head_managers_async: Default::default(),
|
||||
});
|
||||
state.tracker.register(ClientId::from_raw(0));
|
||||
create_dummy_output(&state);
|
||||
|
|
@ -523,6 +530,11 @@ fn start_global_event_handlers(state: &Rc<State>) -> Vec<SpawnedFuture<()>> {
|
|||
"position hint requests",
|
||||
handle_position_hint_requests(state.clone()),
|
||||
),
|
||||
eng.spawn2(
|
||||
"jay head manager send done",
|
||||
Phase::Layout,
|
||||
handle_jay_head_manager_done(state.clone()),
|
||||
),
|
||||
]
|
||||
}
|
||||
|
||||
|
|
@ -602,9 +614,6 @@ fn create_dummy_output(state: &Rc<State>) {
|
|||
tearing_mode: Cell::new(&TearingMode::Never),
|
||||
brightness: Cell::new(None),
|
||||
});
|
||||
let connector = Rc::new(DummyOutput {
|
||||
id: state.connector_ids.next(),
|
||||
}) as Rc<dyn Connector>;
|
||||
let mode = backend::Mode {
|
||||
width: 0,
|
||||
height: 0,
|
||||
|
|
@ -622,11 +631,21 @@ fn create_dummy_output(state: &Rc<State>) {
|
|||
color_space: Default::default(),
|
||||
transfer_function: Default::default(),
|
||||
};
|
||||
let id = state.connector_ids.next();
|
||||
let connector = Rc::new(DummyOutput { id }) as Rc<dyn Connector>;
|
||||
let name = Rc::new("Dummy".to_string());
|
||||
let head_name = state.head_names.next();
|
||||
let head_state = HeadState {
|
||||
name: RcEq(name.clone()),
|
||||
wl_output: None,
|
||||
monitor_info: None,
|
||||
};
|
||||
let connector_data = Rc::new(ConnectorData {
|
||||
id,
|
||||
connector,
|
||||
handler: Cell::new(None),
|
||||
connected: Cell::new(true),
|
||||
name: "Dummy".to_string(),
|
||||
name,
|
||||
drm_dev: None,
|
||||
async_event: Default::default(),
|
||||
damaged: Cell::new(false),
|
||||
|
|
@ -634,6 +653,7 @@ fn create_dummy_output(state: &Rc<State>) {
|
|||
needs_vblank_emulation: Cell::new(false),
|
||||
damage_intersect: Default::default(),
|
||||
state: Cell::new(backend_state),
|
||||
head_managers: HeadManagers::new(head_name, head_state),
|
||||
});
|
||||
let schedule = Rc::new(OutputSchedule::new(
|
||||
&state.ring,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue