mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-29 17:15:38 +08:00
perf: Improve kernel management logic & add more dev mode logs
This commit is contained in:
@@ -135,10 +135,36 @@ pub fn toggle_tun_mode() {
|
||||
}
|
||||
|
||||
pub fn quit(code: Option<i32>) {
|
||||
println!("Starting application quit process");
|
||||
log::info!(target: "app", "Starting application quit process");
|
||||
|
||||
let app_handle = handle::Handle::global().app_handle().unwrap();
|
||||
handle::Handle::global().set_is_exiting();
|
||||
resolve::resolve_reset();
|
||||
log_err!(handle::Handle::global().get_window().unwrap().close());
|
||||
|
||||
// 立即关闭窗口,让用户感知到退出开始
|
||||
if let Some(window) = handle::Handle::global().get_window() {
|
||||
let _ = window.close();
|
||||
}
|
||||
|
||||
// 后台执行所有清理工作
|
||||
let app_handle_clone = app_handle.clone();
|
||||
tauri::async_runtime::spawn(async move {
|
||||
// 1. 发送停止内核指令
|
||||
let _ = CoreManager::global().stop_core().await;
|
||||
|
||||
// 2. 重置系统代理
|
||||
resolve::resolve_reset();
|
||||
|
||||
// 3. 保存窗口状态
|
||||
let _ = app_handle_clone.save_window_state(StateFlags::default());
|
||||
|
||||
println!("Cleanup tasks completed in background");
|
||||
log::info!(target: "app", "Cleanup tasks completed in background");
|
||||
});
|
||||
|
||||
// 主线程立即退出
|
||||
println!("Exiting application with code: {:?}", code);
|
||||
log::info!(target: "app", "Exiting application with code: {:?}", code);
|
||||
app_handle.exit(code.unwrap_or(0));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user