aboutsummaryrefslogtreecommitdiff
path: root/src/winit.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2023-08-27 19:34:37 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2023-08-27 20:00:28 +0400
commitaf7b978eb405b6c221f8342658fbf5466432b108 (patch)
tree5862c8f81baeafbc8fda378cb605d0c4709419ac /src/winit.rs
parent1575753b69cabf7f4d84f765a025ce1d7672b522 (diff)
downloadniri-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.rs16
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()),