diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-01-23 11:36:11 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-01-23 11:36:11 +0400 |
| commit | 05f2a3709b3447ac4d362980b166c3351a7129b2 (patch) | |
| tree | 530ea751b0e2f6cfb0390e92d90c939559cf80f4 /src/dbus | |
| parent | 743173ef643441f5e58cb078a53a6cf3c93179fa (diff) | |
| download | niri-05f2a3709b3447ac4d362980b166c3351a7129b2.tar.gz niri-05f2a3709b3447ac4d362980b166c3351a7129b2.tar.bz2 niri-05f2a3709b3447ac4d362980b166c3351a7129b2.zip | |
srceencast: Send stream size
Kooha requires this (even though it's optional). Unfortunately, Kooha
also seems to want memfd recording so it doesn't work anyway.
Diffstat (limited to 'src/dbus')
| -rw-r--r-- | src/dbus/mutter_screen_cast.rs | 16 |
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 { |
