From 02f37c8573afb8cce9f38e8d4a809ea58ca3eae8 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Tue, 10 Oct 2023 09:55:44 +0400 Subject: Extract dbus server startup --- src/dbus/mutter_screen_cast.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/dbus/mutter_screen_cast.rs') 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>>, @@ -200,6 +203,21 @@ impl ScreenCast { } } +impl Start for ScreenCast { + fn start(self) -> anyhow::Result { + 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, -- cgit