aboutsummaryrefslogtreecommitdiff
path: root/src/dbus/mutter_screen_cast.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2023-10-10 09:55:44 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2023-10-10 09:55:44 +0400
commit02f37c8573afb8cce9f38e8d4a809ea58ca3eae8 (patch)
tree7125f7dd3719d1e5367aeec834bec0ec1446a364 /src/dbus/mutter_screen_cast.rs
parent66533ae0b1b84c0d5acbc5e6618fb1700eeb61db (diff)
downloadniri-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.rs18
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,