remove session's old_clipboard
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
		
							parent
							
								
									9ebfe7f9ce
								
							
						
					
					
						commit
						e0f4cdd18c
					
				| @ -95,9 +95,10 @@ lazy_static::lazy_static! { | |||||||
|     static ref TEXT_CLIPBOARD_STATE: Arc<Mutex<TextClipboardState>> = Arc::new(Mutex::new(TextClipboardState::new())); |     static ref TEXT_CLIPBOARD_STATE: Arc<Mutex<TextClipboardState>> = Arc::new(Mutex::new(TextClipboardState::new())); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | #[inline] | ||||||
| #[cfg(not(any(target_os = "android", target_os = "ios")))] | #[cfg(not(any(target_os = "android", target_os = "ios")))] | ||||||
| pub fn update_clipboard_text(text: String) { | pub fn get_old_clipboard_text() -> &'static Arc<Mutex<String>> { | ||||||
|     *OLD_CLIPBOARD_TEXT.lock().unwrap() = text; |     &OLD_CLIPBOARD_TEXT | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[cfg(not(any(target_os = "android", target_os = "ios")))] | #[cfg(not(any(target_os = "android", target_os = "ios")))] | ||||||
| @ -666,16 +667,10 @@ impl Client { | |||||||
| 
 | 
 | ||||||
|                         if let Some(msg) = check_clipboard(&mut ctx, Some(&OLD_CLIPBOARD_TEXT)) { |                         if let Some(msg) = check_clipboard(&mut ctx, Some(&OLD_CLIPBOARD_TEXT)) { | ||||||
|                             #[cfg(feature = "flutter")] |                             #[cfg(feature = "flutter")] | ||||||
|                             crate::flutter::send_text_clipboard_msg( |                             crate::flutter::send_text_clipboard_msg(msg); | ||||||
|                                 &*OLD_CLIPBOARD_TEXT.lock().unwrap(), |  | ||||||
|                                 msg, |  | ||||||
|                             ); |  | ||||||
|                             #[cfg(not(feature = "flutter"))] |                             #[cfg(not(feature = "flutter"))] | ||||||
|                             if let Some(ctx) = &_ctx { |                             if let Some(ctx) = &_ctx { | ||||||
|                                 if ctx.cfg.is_text_clipboard_required() |                                 if ctx.cfg.is_text_clipboard_required() { | ||||||
|                                     && *OLD_CLIPBOARD_TEXT.lock().unwrap() |  | ||||||
|                                         != *ctx.old.lock().unwrap() |  | ||||||
|                                 { |  | ||||||
|                                     let _ = ctx.tx.send(Data::Message(msg)); |                                     let _ = ctx.tx.send(Data::Message(msg)); | ||||||
|                                 } |                                 } | ||||||
|                             } |                             } | ||||||
| @ -2444,6 +2439,5 @@ pub(crate) struct ClientClipboardContext; | |||||||
| #[cfg(not(any(target_os = "android", target_os = "ios")))] | #[cfg(not(any(target_os = "android", target_os = "ios")))] | ||||||
| pub(crate) struct ClientClipboardContext { | pub(crate) struct ClientClipboardContext { | ||||||
|     pub cfg: SessionPermissionConfig, |     pub cfg: SessionPermissionConfig, | ||||||
|     pub old: Arc<Mutex<String>>, |  | ||||||
|     pub tx: UnboundedSender<Data>, |     pub tx: UnboundedSender<Data>, | ||||||
| } | } | ||||||
|  | |||||||
| @ -935,11 +935,12 @@ impl<T: InvokeUiSession> Remote<T> { | |||||||
|                             Client::try_start_clipboard(None); |                             Client::try_start_clipboard(None); | ||||||
|                             #[cfg(not(feature = "flutter"))] |                             #[cfg(not(feature = "flutter"))] | ||||||
|                             #[cfg(not(any(target_os = "android", target_os = "ios")))] |                             #[cfg(not(any(target_os = "android", target_os = "ios")))] | ||||||
|                             Client::try_start_clipboard(Some(crate::client::ClientClipboardContext { |                             Client::try_start_clipboard(Some( | ||||||
|                                 cfg: permission_config.clone(), |                                 crate::client::ClientClipboardContext { | ||||||
|                                 old: self.handler.old_clipboard.clone(), |                                     cfg: permission_config.clone(), | ||||||
|                                 tx: sender.clone(), |                                     tx: sender.clone(), | ||||||
|                             })); |                                 }, | ||||||
|  |                             )); | ||||||
| 
 | 
 | ||||||
|                             #[cfg(not(any(target_os = "android", target_os = "ios")))] |                             #[cfg(not(any(target_os = "android", target_os = "ios")))] | ||||||
|                             tokio::spawn(async move { |                             tokio::spawn(async move { | ||||||
| @ -972,7 +973,7 @@ impl<T: InvokeUiSession> Remote<T> { | |||||||
|                 Some(message::Union::Clipboard(cb)) => { |                 Some(message::Union::Clipboard(cb)) => { | ||||||
|                     if !self.handler.lc.read().unwrap().disable_clipboard.v { |                     if !self.handler.lc.read().unwrap().disable_clipboard.v { | ||||||
|                         #[cfg(not(any(target_os = "android", target_os = "ios")))] |                         #[cfg(not(any(target_os = "android", target_os = "ios")))] | ||||||
|                         update_clipboard(cb, Some(&self.handler.old_clipboard)); |                         update_clipboard(cb, Some(&crate::client::get_old_clipboard_text())); | ||||||
|                         #[cfg(any(target_os = "android", target_os = "ios"))] |                         #[cfg(any(target_os = "android", target_os = "ios"))] | ||||||
|                         { |                         { | ||||||
|                             let content = if cb.compress { |                             let content = if cb.compress { | ||||||
|  | |||||||
| @ -187,14 +187,9 @@ pub fn update_clipboard(clipboard: Clipboard, old: Option<&Arc<Mutex<String>>>) | |||||||
|         } |         } | ||||||
|         match ClipboardContext::new() { |         match ClipboardContext::new() { | ||||||
|             Ok(mut ctx) => { |             Ok(mut ctx) => { | ||||||
|                 let host_side = "host"; |                 let side = if old.is_none() { "host" } else { "client" }; | ||||||
|                 let client_side = "client"; |  | ||||||
|                 let side = if old.is_none() { host_side } else { client_side }; |  | ||||||
|                 let old = if let Some(old) = old { old } else { &CONTENT }; |                 let old = if let Some(old) = old { old } else { &CONTENT }; | ||||||
|                 *old.lock().unwrap() = content.clone(); |                 *old.lock().unwrap() = content.clone(); | ||||||
|                 if side == client_side { |  | ||||||
|                     crate::client::update_clipboard_text(content.clone()); |  | ||||||
|                 } |  | ||||||
|                 let _lock = ARBOARD_MTX.lock().unwrap(); |                 let _lock = ARBOARD_MTX.lock().unwrap(); | ||||||
|                 allow_err!(ctx.set_text(content)); |                 allow_err!(ctx.set_text(content)); | ||||||
|                 log::debug!("{} updated on {}", CLIPBOARD_NAME, side); |                 log::debug!("{} updated on {}", CLIPBOARD_NAME, side); | ||||||
|  | |||||||
| @ -725,9 +725,9 @@ pub fn other_sessions_running(id: &str) -> bool { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[cfg(not(any(target_os = "android", target_os = "ios")))] | #[cfg(not(any(target_os = "android", target_os = "ios")))] | ||||||
| pub fn send_text_clipboard_msg(text: &str, msg: Message) { | pub fn send_text_clipboard_msg(msg: Message) { | ||||||
|     for (_id, session) in SESSIONS.read().unwrap().iter() { |     for (_id, session) in SESSIONS.read().unwrap().iter() { | ||||||
|         if session.is_text_clipboard_required() && text != *session.old_clipboard.lock().unwrap() { |         if session.is_text_clipboard_required() { | ||||||
|             session.send(Data::Message(msg.clone())); |             session.send(Data::Message(msg.clone())); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -43,8 +43,6 @@ pub struct Session<T: InvokeUiSession> { | |||||||
|     pub server_keyboard_enabled: Arc<RwLock<bool>>, |     pub server_keyboard_enabled: Arc<RwLock<bool>>, | ||||||
|     pub server_file_transfer_enabled: Arc<RwLock<bool>>, |     pub server_file_transfer_enabled: Arc<RwLock<bool>>, | ||||||
|     pub server_clipboard_enabled: Arc<RwLock<bool>>, |     pub server_clipboard_enabled: Arc<RwLock<bool>>, | ||||||
|     #[cfg(not(any(target_os = "android", target_os = "ios")))] |  | ||||||
|     pub old_clipboard: Arc<Mutex<String>>, |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[derive(Clone)] | #[derive(Clone)] | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user