From d52ca23caa4345ddf768da5af24f47eae6fd4738 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Fri, 8 Sep 2023 17:54:02 +0400 Subject: 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. --- src/backend/winit.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/backend/winit.rs') 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, damage_tracker: OutputDamageTracker, + connectors: Arc>>, } 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>> { + self.connectors.clone() + } } -- cgit