From 7838fa1e758612e2445e24b5fff54f1f74bc7235 Mon Sep 17 00:00:00 2001 From: Tunglies <77394545+Tunglies@users.noreply.github.com> Date: Wed, 10 Dec 2025 23:39:42 +0800 Subject: [PATCH] refactor(tray): remove timer for updating tray in plan, use update manually to prevent needless refresh to cause visuual flash --- src-tauri/src/core/service.rs | 4 ++-- src-tauri/src/core/timer.rs | 19 ------------------- src-tauri/src/core/tray/mod.rs | 2 -- 3 files changed, 2 insertions(+), 23 deletions(-) diff --git a/src-tauri/src/core/service.rs b/src-tauri/src/core/service.rs index e6bdae07d..305b3b290 100644 --- a/src-tauri/src/core/service.rs +++ b/src-tauri/src/core/service.rs @@ -1,6 +1,6 @@ use crate::{ config::{Config, IClashTemp}, - core::Timer, + core::tray::Tray, utils::{dirs, init::service_writer_config}, }; use anyhow::{Context as _, Result, bail}; @@ -578,7 +578,7 @@ impl ServiceManager { } // 防止服务安装成功后,内核未完全启动导致系统托盘无法获取代理节点信息 - Timer::global().add_update_tray_menu_task()?; + Tray::global().update_menu().await?; Ok(()) } } diff --git a/src-tauri/src/core/timer.rs b/src-tauri/src/core/timer.rs index 3732ac831..5a00b36a9 100644 --- a/src-tauri/src/core/timer.rs +++ b/src-tauri/src/core/timer.rs @@ -142,25 +142,6 @@ impl Timer { Ok(()) } - /// 每 3 秒更新系统托盘菜单,总共执行 3 次 - pub fn add_update_tray_menu_task(&self) -> Result<()> { - let tid = self.timer_count.fetch_add(1, Ordering::SeqCst); - let task = TaskBuilder::default() - .set_task_id(tid) - .set_maximum_parallel_runnable_num(1) - .set_frequency_count_down_by_seconds(3, 3) - .spawn_async_routine(|| async move { - logging!(debug, Type::Timer, "Updating tray menu"); - crate::core::tray::Tray::global().update_menu().await - }) - .context("failed to create update tray menu timer task")?; - self.delay_timer - .write() - .add_task(task) - .context("failed to add update tray menu timer task")?; - Ok(()) - } - /// Refresh timer tasks with better error handling pub async fn refresh(&self) -> Result<()> { // Generate diff outside of lock to minimize lock contention diff --git a/src-tauri/src/core/tray/mod.rs b/src-tauri/src/core/tray/mod.rs index 2f2c32366..107116cc8 100644 --- a/src-tauri/src/core/tray/mod.rs +++ b/src-tauri/src/core/tray/mod.rs @@ -198,8 +198,6 @@ impl Tray { ); } } - // TODO: 初始化时,暂时使用此方法更新系统托盘菜单,有效避免代理节点菜单空白 - crate::core::timer::Timer::global().add_update_tray_menu_task()?; Ok(()) }