From ea238337c4e94462173f1d9f01cce56bebe27ac0 Mon Sep 17 00:00:00 2001 From: fufesou Date: Fri, 4 Nov 2022 18:14:47 +0800 Subject: [PATCH] fix cm crash Signed-off-by: fufesou --- src/ui_cm_interface.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ui_cm_interface.rs b/src/ui_cm_interface.rs index 5fb3c76fd..226228740 100644 --- a/src/ui_cm_interface.rs +++ b/src/ui_cm_interface.rs @@ -57,6 +57,7 @@ struct IpcTaskRunner { tx: mpsc::UnboundedSender, rx: mpsc::UnboundedReceiver, close: bool, + running: bool, conn_id: i32, #[cfg(windows)] file_transfer_enabled: bool, @@ -218,6 +219,7 @@ pub fn switch_permission(id: i32, name: String, enabled: bool) { }; } +#[cfg(any(target_os = "android", target_os = "ios", feature = "flutter"))] #[inline] pub fn get_clients_state() -> String { let clients = CLIENTS.read().unwrap(); @@ -287,6 +289,7 @@ impl IpcTaskRunner { (_tx_clip, rx_clip) = unbounded_channel::(); } + self.running = false; loop { tokio::select! { res = self.stream.next() => { @@ -305,6 +308,7 @@ impl IpcTaskRunner { { self.file_transfer_enabled = _file_transfer_enabled; } + self.running = true; break; } Data::Close => { @@ -389,13 +393,13 @@ impl IpcTaskRunner { tx, rx, close: true, + running: true, conn_id: 0, #[cfg(windows)] file_transfer_enabled: false, }; - task_runner.run().await; - if task_runner.conn_id > 0 { + while task_runner.running { task_runner.run().await; } if task_runner.conn_id > 0 {