diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2023-10-10 09:55:44 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2023-10-10 09:55:44 +0400 |
| commit | 02f37c8573afb8cce9f38e8d4a809ea58ca3eae8 (patch) | |
| tree | 7125f7dd3719d1e5367aeec834bec0ec1446a364 /src/dbus/mutter_screen_cast.rs | |
| parent | 66533ae0b1b84c0d5acbc5e6618fb1700eeb61db (diff) | |
| download | niri-02f37c8573afb8cce9f38e8d4a809ea58ca3eae8.tar.gz niri-02f37c8573afb8cce9f38e8d4a809ea58ca3eae8.tar.bz2 niri-02f37c8573afb8cce9f38e8d4a809ea58ca3eae8.zip | |
Extract dbus server startup
Diffstat (limited to 'src/dbus/mutter_screen_cast.rs')
| -rw-r--r-- | src/dbus/mutter_screen_cast.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/dbus/mutter_screen_cast.rs b/src/dbus/mutter_screen_cast.rs index d64fa734..020d06a3 100644 --- a/src/dbus/mutter_screen_cast.rs +++ b/src/dbus/mutter_screen_cast.rs @@ -6,9 +6,12 @@ use std::sync::{Arc, Mutex}; use serde::Deserialize; use smithay::output::Output; use smithay::reexports::calloop; +use zbus::fdo::RequestNameFlags; use zbus::zvariant::{DeserializeDict, OwnedObjectPath, Type, Value}; use zbus::{dbus_interface, fdo, InterfaceRef, ObjectServer, SignalContext}; +use super::Start; + #[derive(Clone)] pub struct ScreenCast { connectors: Arc<Mutex<HashMap<String, Output>>>, @@ -200,6 +203,21 @@ impl ScreenCast { } } +impl Start for ScreenCast { + fn start(self) -> anyhow::Result<zbus::blocking::Connection> { + let conn = zbus::blocking::Connection::session()?; + let flags = RequestNameFlags::AllowReplacement + | RequestNameFlags::ReplaceExisting + | RequestNameFlags::DoNotQueue; + + conn.object_server() + .at("/org/gnome/Mutter/ScreenCast", self)?; + conn.request_name_with_flags("org.gnome.Mutter.ScreenCast", flags)?; + + Ok(conn) + } +} + impl Session { pub fn new( id: usize, |
