aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dbus/mutter_screen_cast.rs16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/dbus/mutter_screen_cast.rs b/src/dbus/mutter_screen_cast.rs
index 4b367d27..f986442c 100644
--- a/src/dbus/mutter_screen_cast.rs
+++ b/src/dbus/mutter_screen_cast.rs
@@ -7,10 +7,11 @@ use serde::Deserialize;
use smithay::output::Output;
use smithay::reexports::calloop;
use zbus::fdo::RequestNameFlags;
-use zbus::zvariant::{DeserializeDict, OwnedObjectPath, Type, Value};
+use zbus::zvariant::{DeserializeDict, OwnedObjectPath, SerializeDict, Type, Value};
use zbus::{dbus_interface, fdo, InterfaceRef, ObjectServer, SignalContext};
use super::Start;
+use crate::utils::output_size;
#[derive(Clone)]
pub struct ScreenCast {
@@ -54,6 +55,13 @@ pub struct Stream {
to_niri: calloop::channel::Sender<ScreenCastToNiri>,
}
+#[derive(Debug, SerializeDict, Type, Value)]
+#[zvariant(signature = "dict")]
+struct StreamParameters {
+ /// Size of the stream in logical coordinates.
+ size: (i32, i32),
+}
+
pub enum ScreenCastToNiri {
StartCast {
session_id: usize,
@@ -195,6 +203,12 @@ impl Stream {
#[dbus_interface(signal)]
pub async fn pipe_wire_stream_added(ctxt: &SignalContext<'_>, node_id: u32)
-> zbus::Result<()>;
+
+ #[dbus_interface(property)]
+ async fn parameters(&self) -> StreamParameters {
+ let size = output_size(&self.output).into();
+ StreamParameters { size }
+ }
}
impl ScreenCast {