aboutsummaryrefslogtreecommitdiff
path: root/src/backend/winit.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2023-09-08 17:54:02 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2023-09-08 23:53:56 +0400
commitd52ca23caa4345ddf768da5af24f47eae6fd4738 (patch)
treec0e3f3f4c99b0dfd5bd739e349890081cba2187e /src/backend/winit.rs
parentbd0ecf917489a84efa51bb1272ca27039256fe21 (diff)
downloadniri-d52ca23caa4345ddf768da5af24f47eae6fd4738.tar.gz
niri-d52ca23caa4345ddf768da5af24f47eae6fd4738.tar.bz2
niri-d52ca23caa4345ddf768da5af24f47eae6fd4738.zip
Add initial monitor screencast portal impl
DmaBuf monitor screencasting through xdg-dekstop-portal-gnome! Somewhat limited currently, e.g. the cursor is always embedded. But gets most of the job done.
Diffstat (limited to 'src/backend/winit.rs')
-rw-r--r--src/backend/winit.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/backend/winit.rs b/src/backend/winit.rs
index be8ec29a..e7a50ac7 100644
--- a/src/backend/winit.rs
+++ b/src/backend/winit.rs
@@ -1,3 +1,5 @@
+use std::collections::HashMap;
+use std::sync::{Arc, Mutex};
use std::time::Duration;
use smithay::backend::renderer::damage::OutputDamageTracker;
@@ -21,6 +23,7 @@ pub struct Winit {
output: Output,
backend: WinitGraphicsBackend<GlesRenderer>,
damage_tracker: OutputDamageTracker,
+ connectors: Arc<Mutex<HashMap<String, Output>>>,
}
impl Winit {
@@ -53,6 +56,11 @@ impl Winit {
);
output.set_preferred(mode);
+ let connectors = Arc::new(Mutex::new(HashMap::from([(
+ "winit".to_owned(),
+ output.clone(),
+ )])));
+
let damage_tracker = OutputDamageTracker::from_output(&output);
let timer = Timer::immediate();
@@ -99,6 +107,7 @@ impl Winit {
output,
backend,
damage_tracker,
+ connectors,
}
}
@@ -162,4 +171,8 @@ impl Winit {
let renderer = self.backend.renderer();
renderer.set_debug_flags(renderer.debug_flags() ^ DebugFlags::TINT);
}
+
+ pub fn connectors(&self) -> Arc<Mutex<HashMap<String, Output>>> {
+ self.connectors.clone()
+ }
}