From 30840f9988a90d3000910da377e46b17301de03f Mon Sep 17 00:00:00 2001 From: fufesou Date: Thu, 23 Feb 2023 14:43:41 +0800 Subject: [PATCH] fix toggle clipboard dead lock Signed-off-by: fufesou --- src/client.rs | 5 ----- src/flutter_ffi.rs | 10 ++++++++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/client.rs b/src/client.rs index f36bdae78..aa3523185 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1241,11 +1241,6 @@ impl LoginConfigHandler { if !name.contains("block-input") { self.save_config(config); } - #[cfg(feature = "flutter")] - #[cfg(not(any(target_os = "android", target_os = "ios")))] - if name == "disable-clipboard" { - crate::flutter::update_text_clipboard_required(); - } let mut misc = Misc::new(); misc.set_option(option); let mut msg_out = Message::new(); diff --git a/src/flutter_ffi.rs b/src/flutter_ffi.rs index 68ddce9b7..7eeb96b5c 100644 --- a/src/flutter_ffi.rs +++ b/src/flutter_ffi.rs @@ -165,9 +165,15 @@ pub fn session_reconnect(id: String, force_relay: bool) { } pub fn session_toggle_option(id: String, value: String) { + let mut is_found = false; if let Some(session) = SESSIONS.write().unwrap().get_mut(&id) { - log::warn!("toggle option {}", value); - session.toggle_option(value); + is_found = true; + log::warn!("toggle option {}", &value); + session.toggle_option(value.clone()); + } + #[cfg(not(any(target_os = "android", target_os = "ios")))] + if is_found && value == "disable-clipboard" { + crate::flutter::update_text_clipboard_required(); } }