From e9d5897b4bd29e1dac55f22b31aa5bb22e8adb81 Mon Sep 17 00:00:00 2001 From: fufesou Date: Mon, 10 Apr 2023 18:33:16 +0800 Subject: [PATCH] fix clipboard init sync Signed-off-by: fufesou --- src/client.rs | 1 + src/client/io_loop.rs | 24 ++++++++++-------------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/client.rs b/src/client.rs index f39110a78..335fded0b 100644 --- a/src/client.rs +++ b/src/client.rs @@ -690,6 +690,7 @@ impl Client { } } + #[inline] #[cfg(not(any(target_os = "android", target_os = "ios")))] fn get_current_text_clipboard_msg() -> Option { let txt = &*OLD_CLIPBOARD_TEXT.lock().unwrap(); diff --git a/src/client/io_loop.rs b/src/client/io_loop.rs index 1c009d84e..405fb8fbe 100644 --- a/src/client/io_loop.rs +++ b/src/client/io_loop.rs @@ -925,11 +925,6 @@ impl Remote { self.handler.handle_peer_info(pi); self.check_clipboard_file_context(); if !(self.handler.is_file_transfer() || self.handler.is_port_forward()) { - #[cfg(not(any(target_os = "android", target_os = "ios")))] - let sender = self.sender.clone(); - #[cfg(not(any(target_os = "android", target_os = "ios")))] - let permission_config = self.handler.get_permission_config(); - #[cfg(feature = "flutter")] #[cfg(not(any(target_os = "android", target_os = "ios")))] Client::try_start_clipboard(None); @@ -938,21 +933,22 @@ impl Remote { Client::try_start_clipboard(Some( crate::client::ClientClipboardContext { cfg: permission_config.clone(), - tx: sender.clone(), + tx: self.sender.clone(), }, )); #[cfg(not(any(target_os = "android", target_os = "ios")))] - tokio::spawn(async move { - // due to clipboard service interval time - sleep(common::CLIPBOARD_INTERVAL as f32 / 1_000.).await; - if permission_config.is_text_clipboard_required() { - if let Some(msg_out) = Client::get_current_text_clipboard_msg() - { + if let Some(msg_out) = Client::get_current_text_clipboard_msg() { + let sender = self.sender.clone(); + let permission_config = self.handler.get_permission_config(); + tokio::spawn(async move { + // due to clipboard service interval time + sleep(common::CLIPBOARD_INTERVAL as f32 / 1_000.).await; + if permission_config.is_text_clipboard_required() { sender.send(Data::Message(msg_out)).ok(); } - } - }); + }); + } } if self.handler.is_file_transfer() {