diff --git a/anvil/src/input_handler.rs b/anvil/src/input_handler.rs index 1e87c64..31939cf 100644 --- a/anvil/src/input_handler.rs +++ b/anvil/src/input_handler.rs @@ -38,48 +38,40 @@ pub struct AnvilInputHandler { running: Arc, } +pub struct InputInitData { + pub pointer: PointerHandle, + pub keyboard: KeyboardHandle, + pub window_map: Rc>, + pub screen_size: (u32, u32), + pub running: Arc, + pub pointer_location: Rc>, +} + impl AnvilInputHandler { - pub fn new( - log: Logger, - pointer: PointerHandle, - keyboard: KeyboardHandle, - window_map: Rc>, - screen_size: (u32, u32), - running: Arc, - pointer_location: Rc>, - ) -> AnvilInputHandler { + pub fn new(log: Logger, data: InputInitData) -> AnvilInputHandler { AnvilInputHandler { log, - pointer, - keyboard, - window_map, - screen_size, - running, - pointer_location, + pointer: data.pointer, + keyboard: data.keyboard, + window_map: data.window_map, + screen_size: data.screen_size, + running: data.running, + pointer_location: data.pointer_location, #[cfg(feature = "udev")] session: None, } } #[cfg(feature = "udev")] - pub fn new_with_session( - log: Logger, - pointer: PointerHandle, - keyboard: KeyboardHandle, - window_map: Rc>, - screen_size: (u32, u32), - running: Arc, - pointer_location: Rc>, - session: AutoSession, - ) -> AnvilInputHandler { + pub fn new_with_session(log: Logger, data: InputInitData, session: AutoSession) -> AnvilInputHandler { AnvilInputHandler { log, - pointer, - keyboard, - window_map, - screen_size, - running, - pointer_location, + pointer: data.pointer, + keyboard: data.keyboard, + window_map: data.window_map, + screen_size: data.screen_size, + running: data.running, + pointer_location: data.pointer_location, session: Some(session), } } diff --git a/anvil/src/udev.rs b/anvil/src/udev.rs index 5d021cb..e4e5d16 100644 --- a/anvil/src/udev.rs +++ b/anvil/src/udev.rs @@ -60,7 +60,7 @@ use smithay::{ use crate::buffer_utils::BufferUtils; use crate::glium_drawer::GliumDrawer; -use crate::input_handler::AnvilInputHandler; +use crate::input_handler::{AnvilInputHandler, InputInitData}; use crate::shell::{MyWindowMap, Roles}; use crate::state::AnvilState; @@ -205,12 +205,14 @@ pub fn run_udev( let mut libinput_backend = LibinputInputBackend::new(libinput_context, log.clone()); libinput_backend.set_handler(AnvilInputHandler::new_with_session( log.clone(), - pointer, - keyboard, - state.window_map.clone(), - (w, h), - state.running.clone(), - pointer_location, + InputInitData { + pointer, + keyboard, + window_map: state.window_map.clone(), + screen_size: (w, h), + running: state.running.clone(), + pointer_location, + }, session, )); diff --git a/anvil/src/winit.rs b/anvil/src/winit.rs index d40f33b..a0f7479 100644 --- a/anvil/src/winit.rs +++ b/anvil/src/winit.rs @@ -23,7 +23,7 @@ use slog::Logger; use crate::buffer_utils::BufferUtils; use crate::glium_drawer::GliumDrawer; -use crate::input_handler::AnvilInputHandler; +use crate::input_handler::{AnvilInputHandler, InputInitData}; use crate::state::AnvilState; pub fn run_winit( @@ -113,12 +113,14 @@ pub fn run_winit( input.set_handler(AnvilInputHandler::new( log.clone(), - pointer, - keyboard, - state.window_map.clone(), - (0, 0), - state.running.clone(), - pointer_location.clone(), + InputInitData { + pointer, + keyboard, + window_map: state.window_map.clone(), + screen_size: (0, 0), + running: state.running.clone(), + pointer_location: pointer_location.clone(), + }, )); info!(log, "Initialization completed, starting the main loop.");