From 895831f46f3d0d0052bb86100d9b59be8dc7eecc Mon Sep 17 00:00:00 2001 From: fufesou Date: Fri, 10 Nov 2023 08:12:29 +0800 Subject: [PATCH] fix, run check_update_broker_process on privacy mode start Signed-off-by: fufesou --- src/platform/windows.rs | 21 +++++++++++---------- src/privacy_win_mag.rs | 24 ++++++++++++++++-------- src/ui_cm_interface.rs | 11 ----------- 3 files changed, 27 insertions(+), 29 deletions(-) diff --git a/src/platform/windows.rs b/src/platform/windows.rs index a8d853e23..4e1263b54 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -857,8 +857,18 @@ pub fn check_update_broker_process() -> ResultType<()> { }; let cur_exe = cur_dir.join(process_exe); + // Force update broker exe if failed to check modified time. + let cmds = format!( + " + chcp 65001 + taskkill /F /IM {process_exe} + copy /Y \"{origin_process_exe}\" \"{cur_exe}\" + ", + cur_exe = cur_exe.to_string_lossy(), + ); + if !std::path::Path::new(&cur_exe).exists() { - std::fs::copy(origin_process_exe, cur_exe)?; + run_cmds(cmds, false, "update_broker")?; return Ok(()); } @@ -877,15 +887,6 @@ pub fn check_update_broker_process() -> ResultType<()> { } } - // Force update broker exe if failed to check modified time. - let cmds = format!( - " - chcp 65001 - taskkill /F /IM {process_exe} - copy /Y \"{origin_process_exe}\" \"{cur_exe}\" - ", - cur_exe = cur_exe.to_string_lossy(), - ); run_cmds(cmds, false, "update_broker")?; Ok(()) diff --git a/src/privacy_win_mag.rs b/src/privacy_win_mag.rs index 05c2daf05..16c6a01ab 100644 --- a/src/privacy_win_mag.rs +++ b/src/privacy_win_mag.rs @@ -83,6 +83,14 @@ impl WindowHandlers { } pub fn turn_on_privacy(conn_id: i32) -> ResultType { + let pre_conn_id = *CONN_ID.lock().unwrap(); + if pre_conn_id == conn_id { + return Ok(true); + } + if pre_conn_id != 0 { + bail!("Privacy occupied by another one"); + } + let exe_file = std::env::current_exe()?; if let Some(cur_dir) = exe_file.parent() { if !cur_dir.join("WindowInjection.dll").exists() { @@ -101,14 +109,6 @@ pub fn turn_on_privacy(conn_id: i32) -> ResultType { std::thread::sleep(std::time::Duration::from_millis(1_000)); } - let pre_conn_id = *CONN_ID.lock().unwrap(); - if pre_conn_id == conn_id { - return Ok(true); - } - if pre_conn_id != 0 { - bail!("Privacy occupied by another one"); - } - let hwnd = wait_find_privacy_hwnd(0)?; if hwnd.is_null() { bail!("No privacy window created"); @@ -152,6 +152,14 @@ pub fn start() -> ResultType<()> { return Ok(()); } + log::info!("Start privacy mode window broker, check_update_broker_process"); + if let Err(e) = crate::platform::windows::check_update_broker_process() { + log::warn!( + "Failed to check update broker process. Privacy mode may not work properly. {}", + e + ); + } + let exe_file = std::env::current_exe()?; let Some(cur_dir) = exe_file .parent() else { diff --git a/src/ui_cm_interface.rs b/src/ui_cm_interface.rs index b8de4fd82..12d9db276 100644 --- a/src/ui_cm_interface.rs +++ b/src/ui_cm_interface.rs @@ -567,17 +567,6 @@ impl IpcTaskRunner { #[cfg(not(any(target_os = "android", target_os = "ios")))] #[tokio::main(flavor = "current_thread")] pub async fn start_ipc(cm: ConnectionManager) { - #[cfg(windows)] - std::thread::spawn(move || { - log::info!("try create privacy mode window"); - if let Err(e) = crate::platform::windows::check_update_broker_process() { - log::warn!( - "Failed to check update broker process. Privacy mode may not work properly. {}", - e - ); - } - }); - #[cfg(any( target_os = "windows", all(