mirror of
https://gitlab.com/marcandre.lureau/qemu-display.git
synced 2024-12-22 05:35:20 +00:00
qemu-display: replace refcell with rwlock
To have Sync? Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
parent
29926a8df0
commit
9da1aa5aeb
@ -2,7 +2,7 @@
|
||||
use crate::win32::Fd;
|
||||
#[cfg(unix)]
|
||||
use std::os::unix::net::UnixStream;
|
||||
use std::{cell::RefCell, convert::TryFrom};
|
||||
use std::{convert::TryFrom, sync::RwLock};
|
||||
#[cfg(windows)]
|
||||
use uds_windows::UnixStream;
|
||||
#[cfg(unix)]
|
||||
@ -58,7 +58,7 @@ pub struct Console {
|
||||
pub keyboard: KeyboardProxy<'static>,
|
||||
#[derivative(Debug = "ignore")]
|
||||
pub mouse: MouseProxy<'static>,
|
||||
listener: RefCell<Option<Connection>>,
|
||||
listener: RwLock<Option<Connection>>,
|
||||
#[cfg(windows)]
|
||||
peer_pid: u32,
|
||||
}
|
||||
@ -76,7 +76,7 @@ impl Console {
|
||||
proxy,
|
||||
keyboard,
|
||||
mouse,
|
||||
listener: RefCell::new(None),
|
||||
listener: RwLock::new(None),
|
||||
#[cfg(windows)]
|
||||
peer_pid,
|
||||
})
|
||||
@ -107,13 +107,13 @@ impl Console {
|
||||
.serve_at("/org/qemu/Display1/Listener", ConsoleListener::new(handler))?
|
||||
.build()
|
||||
.await?;
|
||||
self.listener.replace(Some(c));
|
||||
*self.listener.write().unwrap() = Some(c);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(windows)]
|
||||
pub async fn set_map_listener<H: ConsoleListenerMapHandler>(&self, handler: H) -> Result<bool> {
|
||||
if let Some(l) = self.listener.borrow_mut().as_mut() {
|
||||
if let Some(l) = &*self.listener.write().unwrap() {
|
||||
return l
|
||||
.object_server()
|
||||
.at(
|
||||
@ -132,7 +132,7 @@ impl Console {
|
||||
&self,
|
||||
handler: H,
|
||||
) -> Result<bool> {
|
||||
if let Some(l) = self.listener.borrow_mut().as_mut() {
|
||||
if let Some(l) = &*self.listener.write().unwrap() {
|
||||
return l
|
||||
.object_server()
|
||||
.at(
|
||||
@ -146,7 +146,7 @@ impl Console {
|
||||
Err(crate::Error::Failed("Must call register first!".into()))
|
||||
}
|
||||
|
||||
pub fn unregister_listener(&mut self) {
|
||||
self.listener.replace(None);
|
||||
pub fn unregister_listener(&self) {
|
||||
*self.listener.write().unwrap() = None;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user