aboutsummaryrefslogtreecommitdiff
path: root/src/protocols
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-05-20 15:36:08 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-05-20 15:36:08 +0400
commitf4cdde1f4f89729f91336ea2f5ad7a1265e3bf70 (patch)
treec87d826e5de1cf575fa81c8680b0224d5ce5b26f /src/protocols
parent56e02a398d9853a4a52a5200560ca75179f7c23c (diff)
downloadniri-f4cdde1f4f89729f91336ea2f5ad7a1265e3bf70.tar.gz
niri-f4cdde1f4f89729f91336ea2f5ad7a1265e3bf70.tar.bz2
niri-f4cdde1f4f89729f91336ea2f5ad7a1265e3bf70.zip
Fix no outputs case handling in a few places
Diffstat (limited to 'src/protocols')
-rw-r--r--src/protocols/screencopy.rs16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/protocols/screencopy.rs b/src/protocols/screencopy.rs
index 808be4cb..fd6bda68 100644
--- a/src/protocols/screencopy.rs
+++ b/src/protocols/screencopy.rs
@@ -94,7 +94,13 @@ where
overlay_cursor,
output,
} => {
- let output = Output::from_resource(&output).unwrap();
+ let Some(output) = Output::from_resource(&output) else {
+ trace!("screencopy client requested non-existent output");
+ let frame = data_init.init(frame, ScreencopyFrameState::Failed);
+ frame.failed();
+ return;
+ };
+
let buffer_size = output.current_mode().unwrap().size;
let region_loc = Point::from((0, 0));
@@ -116,7 +122,13 @@ where
return;
}
- let output = Output::from_resource(&output).unwrap();
+ let Some(output) = Output::from_resource(&output) else {
+ trace!("screencopy client requested non-existent output");
+ let frame = data_init.init(frame, ScreencopyFrameState::Failed);
+ frame.failed();
+ return;
+ };
+
let output_transform = output.current_transform();
let output_physical_size =
output_transform.transform_size(output.current_mode().unwrap().size);