diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2023-08-27 19:34:37 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2023-08-27 20:00:28 +0400 |
| commit | af7b978eb405b6c221f8342658fbf5466432b108 (patch) | |
| tree | 5862c8f81baeafbc8fda378cb605d0c4709419ac /src/winit.rs | |
| parent | 1575753b69cabf7f4d84f765a025ce1d7672b522 (diff) | |
| download | niri-af7b978eb405b6c221f8342658fbf5466432b108.tar.gz niri-af7b978eb405b6c221f8342658fbf5466432b108.tar.bz2 niri-af7b978eb405b6c221f8342658fbf5466432b108.zip | |
Implement taking a monitor screenshot
Diffstat (limited to 'src/winit.rs')
| -rw-r--r-- | src/winit.rs | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/winit.rs b/src/winit.rs index c8b29203..69fad6ee 100644 --- a/src/winit.rs +++ b/src/winit.rs @@ -12,7 +12,7 @@ use smithay::reexports::winit::window::WindowBuilder; use smithay::utils::Transform; use crate::backend::Backend; -use crate::input::CompositorMod; +use crate::input::{BackendAction, CompositorMod}; use crate::niri::OutputRenderElements; use crate::utils::get_monotonic_time; use crate::{LoopData, Niri}; @@ -129,6 +129,7 @@ impl Winit { } fn dispatch(&mut self, niri: &mut Niri) { + let renderer = self.backend.renderer(); let res = self .winit_event_loop .dispatch_new_events(|event| match event { @@ -145,7 +146,18 @@ impl Winit { niri.output_resized(self.output.clone()); } WinitEvent::Input(event) => { - niri.process_input_event(&mut |_| (), CompositorMod::Alt, event) + match niri.process_input_event(CompositorMod::Alt, event) { + BackendAction::None => (), + BackendAction::ChangeVt(_) => (), + BackendAction::Screenshot => { + let active = niri.monitor_set.active_output().cloned(); + if let Some(active) = active { + if let Err(err) = niri.screenshot(renderer, &active) { + warn!("error taking screenshot: {err:?}"); + } + } + } + } } WinitEvent::Focus(_) => (), WinitEvent::Refresh => niri.queue_redraw(self.output.clone()), |
