anvil: Introduce InputInitData to simplify function prototypes
This commit is contained in:
parent
35d8cea547
commit
5552c81a32
|
@ -38,48 +38,40 @@ pub struct AnvilInputHandler {
|
|||
running: Arc<AtomicBool>,
|
||||
}
|
||||
|
||||
pub struct InputInitData {
|
||||
pub pointer: PointerHandle,
|
||||
pub keyboard: KeyboardHandle,
|
||||
pub window_map: Rc<RefCell<MyWindowMap>>,
|
||||
pub screen_size: (u32, u32),
|
||||
pub running: Arc<AtomicBool>,
|
||||
pub pointer_location: Rc<RefCell<(f64, f64)>>,
|
||||
}
|
||||
|
||||
impl AnvilInputHandler {
|
||||
pub fn new(
|
||||
log: Logger,
|
||||
pointer: PointerHandle,
|
||||
keyboard: KeyboardHandle,
|
||||
window_map: Rc<RefCell<MyWindowMap>>,
|
||||
screen_size: (u32, u32),
|
||||
running: Arc<AtomicBool>,
|
||||
pointer_location: Rc<RefCell<(f64, f64)>>,
|
||||
) -> 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<RefCell<MyWindowMap>>,
|
||||
screen_size: (u32, u32),
|
||||
running: Arc<AtomicBool>,
|
||||
pointer_location: Rc<RefCell<(f64, f64)>>,
|
||||
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),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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(),
|
||||
InputInitData {
|
||||
pointer,
|
||||
keyboard,
|
||||
state.window_map.clone(),
|
||||
(w, h),
|
||||
state.running.clone(),
|
||||
window_map: state.window_map.clone(),
|
||||
screen_size: (w, h),
|
||||
running: state.running.clone(),
|
||||
pointer_location,
|
||||
},
|
||||
session,
|
||||
));
|
||||
|
||||
|
|
|
@ -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(),
|
||||
InputInitData {
|
||||
pointer,
|
||||
keyboard,
|
||||
state.window_map.clone(),
|
||||
(0, 0),
|
||||
state.running.clone(),
|
||||
pointer_location.clone(),
|
||||
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.");
|
||||
|
|
Loading…
Reference in New Issue