mirror of
https://github.com/rustdesk/qemu-display.git
synced 2025-07-01 15:25:29 +00:00
Update to latest crates
This commit is contained in:
parent
7431fbab65
commit
998a8e7ddd
17
Cargo.toml
17
Cargo.toml
@ -11,15 +11,18 @@ members = [
|
|||||||
default-members = ["qemu-rdw"]
|
default-members = ["qemu-rdw"]
|
||||||
|
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
zbus = { git = 'https://gitlab.freedesktop.org/dbus/zbus.git' }
|
|
||||||
zvariant = { git = 'https://gitlab.freedesktop.org/dbus/zbus.git' }
|
|
||||||
vnc = { git = 'https://github.com/elmarco/rust-vnc', branch = 'server' }
|
vnc = { git = 'https://github.com/elmarco/rust-vnc', branch = 'server' }
|
||||||
|
usbredirhost = { path = "../usbredir-rs/usbredirhost" }
|
||||||
|
libusb1-sys = { path = "../rusb/libusb1-sys" }
|
||||||
|
rusb = { path = "../rusb" }
|
||||||
|
zbus = { path = "../zbus/zbus" }
|
||||||
|
zvariant = { path = "../zbus/zvariant" }
|
||||||
|
|
||||||
[patch."https://gitlab.gnome.org/malureau/rdw.git"]
|
[patch."https://gitlab.gnome.org/malureau/rdw.git"]
|
||||||
rdw = { path = '/home/elmarco/src/rdw/rdw' }
|
rdw = { path = '../rdw/rdw' }
|
||||||
|
|
||||||
[patch."https://github.com/gtk-rs/gtk4-rs"]
|
[patch."https://github.com/gtk-rs/gtk4-rs"]
|
||||||
gdk4-wayland = { path = '/home/elmarco/src/gtk4-rs/gdk4-wayland' }
|
gdk4-wayland = { path = '../gtk4-rs/gdk4-wayland' }
|
||||||
gdk4-x11 = { path = '/home/elmarco/src/gtk4-rs/gdk4-x11' }
|
gdk4-x11 = { path = '../gtk4-rs/gdk4-x11' }
|
||||||
gtk4 = { path = '/home/elmarco/src/gtk4-rs/gtk4' }
|
gtk4 = { path = '../gtk4-rs/gtk4' }
|
||||||
gtk4-sys = { path = '/home/elmarco/src/gtk4-rs/gtk4/sys' }
|
gtk4-sys = { path = '../gtk4-rs/gtk4/sys' }
|
||||||
|
@ -6,7 +6,7 @@ use std::sync::mpsc::{self, Receiver, SendError};
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::{os::unix::io::AsRawFd, thread};
|
use std::{os::unix::io::AsRawFd, thread};
|
||||||
|
|
||||||
use zbus::{dbus_interface, dbus_proxy, export::zvariant::Fd};
|
use zbus::{dbus_interface, dbus_proxy, zvariant::Fd};
|
||||||
|
|
||||||
use crate::{EventSender, Result};
|
use crate::{EventSender, Result};
|
||||||
|
|
||||||
@ -267,9 +267,10 @@ impl Audio {
|
|||||||
// TODO: we may want to generalize interface detection
|
// TODO: we may want to generalize interface detection
|
||||||
let ip = zbus::fdo::AsyncIntrospectableProxy::builder(conn)
|
let ip = zbus::fdo::AsyncIntrospectableProxy::builder(conn)
|
||||||
.destination("org.qemu")
|
.destination("org.qemu")
|
||||||
|
.unwrap()
|
||||||
.path("/org/qemu/Display1")
|
.path("/org/qemu/Display1")
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.build_async()
|
.build()
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let introspect = zbus::xml::Node::from_str(&ip.introspect().await.unwrap()).unwrap();
|
let introspect = zbus::xml::Node::from_str(&ip.introspect().await.unwrap()).unwrap();
|
||||||
@ -288,7 +289,10 @@ impl Audio {
|
|||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let _thread = thread::spawn(move || {
|
let _thread = thread::spawn(move || {
|
||||||
let c = zbus::Connection::new_unix_client(p1, false).unwrap();
|
let c = zbus::ConnectionBuilder::unix_stream(p1)
|
||||||
|
.p2p()
|
||||||
|
.build()
|
||||||
|
.unwrap();
|
||||||
let mut s = zbus::ObjectServer::new(&c);
|
let mut s = zbus::ObjectServer::new(&c);
|
||||||
let listener = AudioOutListener::new(tx);
|
let listener = AudioOutListener::new(tx);
|
||||||
let err = listener.err();
|
let err = listener.err();
|
||||||
@ -317,7 +321,10 @@ impl Audio {
|
|||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let _thread = thread::spawn(move || {
|
let _thread = thread::spawn(move || {
|
||||||
let c = zbus::Connection::new_unix_client(p1, false).unwrap();
|
let c = zbus::ConnectionBuilder::unix_stream(p1)
|
||||||
|
.p2p()
|
||||||
|
.build()
|
||||||
|
.unwrap();
|
||||||
let mut s = zbus::ObjectServer::new(&c);
|
let mut s = zbus::ObjectServer::new(&c);
|
||||||
let listener = AudioInListener::new(tx);
|
let listener = AudioInListener::new(tx);
|
||||||
let err = listener.err();
|
let err = listener.err();
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use std::convert::TryFrom;
|
use std::convert::TryFrom;
|
||||||
use zbus::dbus_proxy;
|
use zbus::dbus_proxy;
|
||||||
use zbus::export::zvariant::{Fd, ObjectPath};
|
use zbus::zvariant::{Fd, ObjectPath};
|
||||||
|
|
||||||
use crate::Result;
|
use crate::Result;
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ impl Chardev {
|
|||||||
let obj_path = ObjectPath::try_from(format!("/org/qemu/Display1/Chardev_{}", id))?;
|
let obj_path = ObjectPath::try_from(format!("/org/qemu/Display1/Chardev_{}", id))?;
|
||||||
let proxy = AsyncChardevProxy::builder(conn)
|
let proxy = AsyncChardevProxy::builder(conn)
|
||||||
.path(&obj_path)?
|
.path(&obj_path)?
|
||||||
.build_async()
|
.build()
|
||||||
.await?;
|
.await?;
|
||||||
Ok(Self { proxy })
|
Ok(Self { proxy })
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
use once_cell::sync::OnceCell;
|
use once_cell::sync::OnceCell;
|
||||||
use serde_repr::{Deserialize_repr, Serialize_repr};
|
use serde_repr::{Deserialize_repr, Serialize_repr};
|
||||||
use std::convert::TryFrom;
|
use std::convert::TryFrom;
|
||||||
use std::sync::mpsc::{channel, SendError, Sender};
|
use std::sync::mpsc::{channel, Sender};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use zbus::{dbus_interface, dbus_proxy, export::zvariant::ObjectPath};
|
use zbus::{dbus_interface, dbus_proxy, zvariant::ObjectPath};
|
||||||
use zvariant::derive::Type;
|
use zvariant::derive::Type;
|
||||||
|
|
||||||
use crate::{EventSender, Result};
|
use crate::{EventSender, Result};
|
||||||
@ -60,7 +60,7 @@ pub enum ClipboardEvent {
|
|||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub(crate) struct ClipboardListener<E: EventSender<Event = ClipboardEvent>> {
|
pub(crate) struct ClipboardListener<E: EventSender<Event = ClipboardEvent>> {
|
||||||
tx: E,
|
tx: E,
|
||||||
err: Arc<OnceCell<SendError<ClipboardEvent>>>,
|
err: Arc<OnceCell<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[dbus_interface(name = "org.qemu.Display1.Clipboard")]
|
#[dbus_interface(name = "org.qemu.Display1.Clipboard")]
|
||||||
@ -112,11 +112,11 @@ impl<E: 'static + EventSender<Event = ClipboardEvent>> ClipboardListener<E> {
|
|||||||
|
|
||||||
fn send(&mut self, event: ClipboardEvent) {
|
fn send(&mut self, event: ClipboardEvent) {
|
||||||
if let Err(e) = self.tx.send_event(event) {
|
if let Err(e) = self.tx.send_event(event) {
|
||||||
let _ = self.err.set(e);
|
let _ = self.err.set(e.to_string());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn err(&self) -> Arc<OnceCell<SendError<ClipboardEvent>>> {
|
pub fn err(&self) -> Arc<OnceCell<String>> {
|
||||||
self.err.clone()
|
self.err.clone()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -134,7 +134,7 @@ impl Clipboard {
|
|||||||
let obj_path = ObjectPath::try_from("/org/qemu/Display1/Clipboard")?;
|
let obj_path = ObjectPath::try_from("/org/qemu/Display1/Clipboard")?;
|
||||||
let proxy = AsyncClipboardProxy::builder(conn)
|
let proxy = AsyncClipboardProxy::builder(conn)
|
||||||
.path(&obj_path)?
|
.path(&obj_path)?
|
||||||
.build_async()
|
.build()
|
||||||
.await?;
|
.await?;
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
conn: conn.clone(),
|
conn: conn.clone(),
|
||||||
|
@ -5,7 +5,7 @@ use std::{os::unix::io::AsRawFd, thread};
|
|||||||
|
|
||||||
use zbus::{
|
use zbus::{
|
||||||
dbus_proxy,
|
dbus_proxy,
|
||||||
export::zvariant::{Fd, ObjectPath},
|
zvariant::{Fd, ObjectPath},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::Result;
|
use crate::Result;
|
||||||
@ -60,15 +60,15 @@ impl Console {
|
|||||||
let obj_path = ObjectPath::try_from(format!("/org/qemu/Display1/Console_{}", idx))?;
|
let obj_path = ObjectPath::try_from(format!("/org/qemu/Display1/Console_{}", idx))?;
|
||||||
let proxy = AsyncConsoleProxy::builder(conn)
|
let proxy = AsyncConsoleProxy::builder(conn)
|
||||||
.path(&obj_path)?
|
.path(&obj_path)?
|
||||||
.build_async()
|
.build()
|
||||||
.await?;
|
.await?;
|
||||||
let keyboard = AsyncKeyboardProxy::builder(conn)
|
let keyboard = AsyncKeyboardProxy::builder(conn)
|
||||||
.path(&obj_path)?
|
.path(&obj_path)?
|
||||||
.build_async()
|
.build()
|
||||||
.await?;
|
.await?;
|
||||||
let mouse = AsyncMouseProxy::builder(conn)
|
let mouse = AsyncMouseProxy::builder(conn)
|
||||||
.path(&obj_path)?
|
.path(&obj_path)?
|
||||||
.build_async()
|
.build()
|
||||||
.await?;
|
.await?;
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
proxy,
|
proxy,
|
||||||
@ -117,7 +117,10 @@ impl Console {
|
|||||||
|
|
||||||
let (wait_tx, wait_rx) = mpsc::channel();
|
let (wait_tx, wait_rx) = mpsc::channel();
|
||||||
let _thread = thread::spawn(move || {
|
let _thread = thread::spawn(move || {
|
||||||
let c = zbus::Connection::new_unix_client(p1, false).unwrap();
|
let c = zbus::ConnectionBuilder::unix_stream(p1)
|
||||||
|
.p2p()
|
||||||
|
.build()
|
||||||
|
.unwrap();
|
||||||
let mut s = zbus::ObjectServer::new(&c);
|
let mut s = zbus::ObjectServer::new(&c);
|
||||||
let listener = ConsoleListener::new(tx, wait_rx);
|
let listener = ConsoleListener::new(tx, wait_rx);
|
||||||
let err = listener.err();
|
let err = listener.err();
|
||||||
@ -147,7 +150,10 @@ impl Console {
|
|||||||
|
|
||||||
let (wait_tx, wait_rx) = mpsc::channel();
|
let (wait_tx, wait_rx) = mpsc::channel();
|
||||||
let _thread = thread::spawn(move || {
|
let _thread = thread::spawn(move || {
|
||||||
let c = zbus::Connection::new_unix_client(p1, false).unwrap();
|
let c = zbus::ConnectionBuilder::unix_stream(p1)
|
||||||
|
.p2p()
|
||||||
|
.build()
|
||||||
|
.unwrap();
|
||||||
let mut s = zbus::ObjectServer::new(&c);
|
let mut s = zbus::ObjectServer::new(&c);
|
||||||
let listener = ConsoleListener::new(tx, wait_rx);
|
let listener = ConsoleListener::new(tx, wait_rx);
|
||||||
let err = listener.err();
|
let err = listener.err();
|
||||||
|
@ -6,7 +6,7 @@ use std::sync::mpsc::{Receiver, RecvError, SendError};
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use derivative::Derivative;
|
use derivative::Derivative;
|
||||||
use zbus::{dbus_interface, export::zvariant::Fd};
|
use zbus::{dbus_interface, zvariant::Fd};
|
||||||
|
|
||||||
use crate::EventSender;
|
use crate::EventSender;
|
||||||
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
use std::sync::mpsc::{SendError, Sender};
|
use std::sync::mpsc::{SendError, Sender};
|
||||||
|
|
||||||
pub(crate) trait EventSender {
|
pub(crate) trait EventSender: Send {
|
||||||
type Event;
|
type Event;
|
||||||
|
|
||||||
fn send_event(&self, t: Self::Event) -> Result<(), SendError<Self::Event>>;
|
fn send_event(&self, t: Self::Event) -> Result<(), SendError<Self::Event>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T> EventSender for Sender<T> {
|
impl<T: Send> EventSender for Sender<T> {
|
||||||
type Event = T;
|
type Event = T;
|
||||||
|
|
||||||
fn send_event(&self, t: Self::Event) -> Result<(), SendError<Self::Event>> {
|
fn send_event(&self, t: Self::Event) -> Result<(), SendError<Self::Event>> {
|
||||||
@ -15,7 +15,7 @@ impl<T> EventSender for Sender<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "glib")]
|
#[cfg(feature = "glib")]
|
||||||
impl<T> EventSender for glib::Sender<T> {
|
impl<T: Send> EventSender for glib::Sender<T> {
|
||||||
type Event = T;
|
type Event = T;
|
||||||
|
|
||||||
fn send_event(&self, t: Self::Event) -> Result<(), SendError<Self::Event>> {
|
fn send_event(&self, t: Self::Event) -> Result<(), SendError<Self::Event>> {
|
||||||
|
@ -16,7 +16,7 @@ fn main() {
|
|||||||
|
|
||||||
let app = gtk::Application::new(Some("org.qemu.rdw.demo"), ApplicationFlags::NON_UNIQUE);
|
let app = gtk::Application::new(Some("org.qemu.rdw.demo"), ApplicationFlags::NON_UNIQUE);
|
||||||
|
|
||||||
let conn: zbus::azync::Connection = Connection::new_session()
|
let conn: zbus::azync::Connection = Connection::session()
|
||||||
.expect("Failed to connect to DBus")
|
.expect("Failed to connect to DBus")
|
||||||
.into();
|
.into();
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ fn main() {
|
|||||||
window.set_child(Some(&term));
|
window.set_child(Some(&term));
|
||||||
|
|
||||||
MainContext::default().spawn_local(clone!(@strong window => async move {
|
MainContext::default().spawn_local(clone!(@strong window => async move {
|
||||||
let conn = Connection::new_session().await
|
let conn = Connection::session().await
|
||||||
.expect("Failed to connect to DBus");
|
.expect("Failed to connect to DBus");
|
||||||
|
|
||||||
if let Ok(c) = Chardev::new(&conn, "serial").await {
|
if let Ok(c) = Chardev::new(&conn, "serial").await {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user