diff options
| author | Kirill Chibisov <contact@kchibisov.com> | 2023-10-17 16:53:04 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2023-10-24 17:26:01 +0400 |
| commit | c6ec36f422c0b7e955bddcc7f783a963e313a8a7 (patch) | |
| tree | cc0e1b9074907a0dad00e844abcde72c208012c5 /src/backend/winit.rs | |
| parent | 8a06bf1558ee697437ad048e525019e6813f724a (diff) | |
| download | niri-c6ec36f422c0b7e955bddcc7f783a963e313a8a7.tar.gz niri-c6ec36f422c0b7e955bddcc7f783a963e313a8a7.tar.bz2 niri-c6ec36f422c0b7e955bddcc7f783a963e313a8a7.zip | |
Update smithay to the latest git
This fixes IME handling.
Diffstat (limited to 'src/backend/winit.rs')
| -rw-r--r-- | src/backend/winit.rs | 61 |
1 files changed, 25 insertions, 36 deletions
diff --git a/src/backend/winit.rs b/src/backend/winit.rs index d818d76d..59278982 100644 --- a/src/backend/winit.rs +++ b/src/backend/winit.rs @@ -8,9 +8,8 @@ use std::time::Duration; use smithay::backend::renderer::damage::OutputDamageTracker; use smithay::backend::renderer::gles::GlesRenderer; use smithay::backend::renderer::{DebugFlags, Renderer}; -use smithay::backend::winit::{self, WinitError, WinitEvent, WinitGraphicsBackend}; +use smithay::backend::winit::{self, WinitEvent, WinitGraphicsBackend}; use smithay::output::{Mode, Output, PhysicalProperties, Scale, Subpixel}; -use smithay::reexports::calloop::timer::{TimeoutAction, Timer}; use smithay::reexports::calloop::LoopHandle; use smithay::reexports::wayland_protocols::wp::presentation_time::server::wp_presentation_feedback; use smithay::reexports::winit::dpi::LogicalSize; @@ -37,7 +36,7 @@ impl Winit { .with_inner_size(LogicalSize::new(1280.0, 800.0)) // .with_resizable(false) .with_title("niri"); - let (backend, mut winit_event_loop) = winit::init_from_builder(builder).unwrap(); + let (backend, winit) = winit::init_from_builder(builder).unwrap(); let output_config = config .borrow() @@ -50,7 +49,7 @@ impl Winit { let scale = scale.max(1.).round() as i32; let mode = Mode { - size: backend.window_size().physical_size, + size: backend.window_size(), refresh: 60_000, }; @@ -78,40 +77,30 @@ impl Winit { let damage_tracker = OutputDamageTracker::from_output(&output); - let timer = Timer::immediate(); event_loop - .insert_source(timer, move |_, _, state| { - let res = winit_event_loop.dispatch_new_events(|event| match event { - WinitEvent::Resized { size, .. } => { - let winit = state.backend.winit(); - winit.output.change_current_state( - Some(Mode { - size, - refresh: 60_000, - }), - None, - None, - None, - ); - state.niri.output_resized(winit.output.clone()); - } - WinitEvent::Input(event) => state.process_input_event(event), - WinitEvent::Focus(_) => (), - WinitEvent::Refresh => state - .niri - .queue_redraw(state.backend.winit().output.clone()), - }); - - // I want this to stop compiling if more errors are added. - #[allow(clippy::single_match)] - match res { - Err(WinitError::WindowClosed) => { - state.niri.stop_signal.stop(); - state.niri.remove_output(&state.backend.winit().output); - } - Ok(()) => (), + .insert_source(winit, move |event, _, state| match event { + WinitEvent::Resized { size, .. } => { + let winit = state.backend.winit(); + winit.output.change_current_state( + Some(Mode { + size, + refresh: 60_000, + }), + None, + None, + None, + ); + state.niri.output_resized(winit.output.clone()); + } + WinitEvent::Input(event) => state.process_input_event(event), + WinitEvent::Focus(_) => (), + WinitEvent::Redraw => state + .niri + .queue_redraw(state.backend.winit().output.clone()), + WinitEvent::CloseRequested => { + state.niri.stop_signal.stop(); + state.niri.remove_output(&state.backend.winit().output); } - TimeoutAction::ToDuration(Duration::from_micros(16667)) }) .unwrap(); |
