From b73e5bbfa090ccc5dc235c2727ca8d8a5902c50b Mon Sep 17 00:00:00 2001 From: 21pages Date: Sun, 14 Jun 2026 17:27:19 +0800 Subject: [PATCH] opt: release clipboard config lock before updates (#15277) Signed-off-by: 21pages --- src/client/io_loop.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/client/io_loop.rs b/src/client/io_loop.rs index b02ff48ca..fc6ab3414 100644 --- a/src/client/io_loop.rs +++ b/src/client/io_loop.rs @@ -1426,8 +1426,11 @@ impl Remote { self.handler.set_cursor_position(cp); } Some(message::Union::Clipboard(cb)) => { - let lc = self.handler.lc.read().unwrap(); - if !lc.disable_clipboard.v && !lc.view_only.v { + let clipboard_allowed = { + let lc = self.handler.lc.read().unwrap(); + !lc.disable_clipboard.v && !lc.view_only.v + }; + if clipboard_allowed { #[cfg(not(any(target_os = "android", target_os = "ios")))] update_clipboard(vec![cb], ClipboardSide::Client); #[cfg(target_os = "ios")] @@ -1446,8 +1449,11 @@ impl Remote { } } Some(message::Union::MultiClipboards(_mcb)) => { - let lc = self.handler.lc.read().unwrap(); - if !lc.disable_clipboard.v && !lc.view_only.v { + let clipboard_allowed = { + let lc = self.handler.lc.read().unwrap(); + !lc.disable_clipboard.v && !lc.view_only.v + }; + if clipboard_allowed { #[cfg(not(any(target_os = "android", target_os = "ios")))] update_clipboard(_mcb.clipboards, ClipboardSide::Client); #[cfg(target_os = "ios")]