From 0df514135c41d48796f128cd49bb239639dee762 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 18 Jun 2024 12:22:04 +0400 Subject: [PATCH] qemu-display: take optional destination for proxy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau --- qemu-display/src/audio.rs | 24 ++++++++++++++++++++---- qemu-display/src/display.rs | 1 + 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/qemu-display/src/audio.rs b/qemu-display/src/audio.rs index 601f54c..bb6233f 100644 --- a/qemu-display/src/audio.rs +++ b/qemu-display/src/audio.rs @@ -1,14 +1,15 @@ #[cfg(windows)] use crate::win32::Fd; +use std::convert::TryInto; #[cfg(unix)] use std::os::unix::net::UnixStream; #[cfg(windows)] use uds_windows::UnixStream; #[cfg(unix)] use zbus::zvariant::Fd; -use zbus::Connection; +use zbus::{names::BusName, Connection}; -use crate::{util, Result}; +use crate::{util, Error, Result}; #[derive(Debug)] pub struct PCMInfo { @@ -234,8 +235,23 @@ impl AudioInListener { } impl Audio { - pub async fn new(conn: &zbus::Connection, #[cfg(windows)] peer_pid: u32) -> Result { - let proxy = AudioProxy::new(conn).await?; + pub async fn new( + conn: &zbus::Connection, + dest: Option, + #[cfg(windows)] peer_pid: u32, + ) -> Result + where + D: TryInto>, + D::Error: Into, + { + let builder = AudioProxy::builder(conn); + let builder = if let Some(dest) = dest { + let dest = dest.try_into().map_err(Into::into)?; + builder.destination(dest)? + } else { + builder + }; + let proxy = builder.build().await?; Ok(Self { proxy, in_listener: None, diff --git a/qemu-display/src/display.rs b/qemu-display/src/display.rs index 6a84f91..f92efd5 100644 --- a/qemu-display/src/display.rs +++ b/qemu-display/src/display.rs @@ -216,6 +216,7 @@ impl<'d> Display<'d> { Ok(Some( Audio::new( &self.inner.conn, + Some(self.inner.proxy.inner().destination().to_owned()), #[cfg(windows)] self.peer_pid(), )