diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-03-27 09:46:18 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-03-27 09:46:18 +0400 |
| commit | e276c906bf4bea27dc8173815ff373d04c20caaf (patch) | |
| tree | 6843e6ab8244f296b89d54d53b2ebfd6e1a16592 /src/dbus/mutter_screen_cast.rs | |
| parent | 571768af433b0fdc653f44b7dee0ad2dda6fe344 (diff) | |
| download | niri-e276c906bf4bea27dc8173815ff373d04c20caaf.tar.gz niri-e276c906bf4bea27dc8173815ff373d04c20caaf.tar.bz2 niri-e276c906bf4bea27dc8173815ff373d04c20caaf.zip | |
Expose more info in DisplayConfig impl
Needed for the new xdp-gnome.
Diffstat (limited to 'src/dbus/mutter_screen_cast.rs')
| -rw-r--r-- | src/dbus/mutter_screen_cast.rs | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/dbus/mutter_screen_cast.rs b/src/dbus/mutter_screen_cast.rs index 151a1c89..d9c6c28e 100644 --- a/src/dbus/mutter_screen_cast.rs +++ b/src/dbus/mutter_screen_cast.rs @@ -10,11 +10,12 @@ use zbus::zvariant::{DeserializeDict, OwnedObjectPath, SerializeDict, Type, Valu use zbus::{dbus_interface, fdo, InterfaceRef, ObjectServer, SignalContext}; use super::Start; +use crate::backend::IpcOutputMap; use crate::utils::output_size; #[derive(Clone)] pub struct ScreenCast { - enabled_outputs: Arc<Mutex<HashMap<String, Output>>>, + ipc_outputs: Arc<Mutex<IpcOutputMap>>, to_niri: calloop::channel::Sender<ScreenCastToNiri>, #[allow(clippy::type_complexity)] sessions: Arc<Mutex<Vec<(Session, InterfaceRef<Session>)>>>, @@ -23,7 +24,7 @@ pub struct ScreenCast { #[derive(Clone)] pub struct Session { id: usize, - enabled_outputs: Arc<Mutex<HashMap<String, Output>>>, + ipc_outputs: Arc<Mutex<IpcOutputMap>>, to_niri: calloop::channel::Sender<ScreenCastToNiri>, #[allow(clippy::type_complexity)] streams: Arc<Mutex<Vec<(Stream, InterfaceRef<Stream>)>>>, @@ -92,11 +93,7 @@ impl ScreenCast { let path = format!("/org/gnome/Mutter/ScreenCast/Session/u{}", session_id); let path = OwnedObjectPath::try_from(path).unwrap(); - let session = Session::new( - session_id, - self.enabled_outputs.clone(), - self.to_niri.clone(), - ); + let session = Session::new(session_id, self.ipc_outputs.clone(), self.to_niri.clone()); match server.at(&path, session.clone()).await { Ok(true) => { let iface = server.interface(&path).await.unwrap(); @@ -163,7 +160,8 @@ impl Session { ) -> fdo::Result<OwnedObjectPath> { debug!(connector, ?properties, "record_monitor"); - let Some(output) = self.enabled_outputs.lock().unwrap().get(connector).cloned() else { + let Some((_, Some(output))) = self.ipc_outputs.lock().unwrap().get(connector).cloned() + else { return Err(fdo::Error::Failed("no such monitor".to_owned())); }; @@ -212,11 +210,11 @@ impl Stream { impl ScreenCast { pub fn new( - enabled_outputs: Arc<Mutex<HashMap<String, Output>>>, + ipc_outputs: Arc<Mutex<IpcOutputMap>>, to_niri: calloop::channel::Sender<ScreenCastToNiri>, ) -> Self { Self { - enabled_outputs, + ipc_outputs, to_niri, sessions: Arc::new(Mutex::new(vec![])), } @@ -241,12 +239,12 @@ impl Start for ScreenCast { impl Session { pub fn new( id: usize, - enabled_outputs: Arc<Mutex<HashMap<String, Output>>>, + ipc_outputs: Arc<Mutex<IpcOutputMap>>, to_niri: calloop::channel::Sender<ScreenCastToNiri>, ) -> Self { Self { id, - enabled_outputs, + ipc_outputs, streams: Arc::new(Mutex::new(vec![])), to_niri, } |
