diff --git a/VKernel/Kernel/services/desktop.vp b/VKernel/Kernel/services/desktop.vp index baa302a..c77fbdc 100644 --- a/VKernel/Kernel/services/desktop.vp +++ b/VKernel/Kernel/services/desktop.vp @@ -1448,9 +1448,10 @@ def _draw_taskbar(back: uint32*): _draw_char(back, w, h, ch_x, ch_y, first_ch, ch_col) icon_cnt += 1 - if _render_count % 30 == 0: - rtc.rtc_read_time() - + # RTC 缓存由桌面线程的“每秒”分支负责重读(见 desktop_thread 内 _last_clock_sec 那段)。 + # 此前是在这里按 `_render_count % 30 == 0` 重读 —— 会把时钟刷新频率绑到渲染速率上: + # 空闲时约 1 帧/秒 → 时钟 30 秒才动一次;鼠标一动渲染变快,时钟立刻跟上(表现为 + # “必须鼠标移动才刷新”)。 hr: uint8 = rtc.rtc_get_hours() mn: uint8 = rtc.rtc_get_minutes() sc: uint8 = rtc.rtc_get_seconds() @@ -1723,6 +1724,9 @@ def desktop_thread(arg: rawptr) -> int: cur_sec: uint32 = timer.timer_get_seconds() if cur_sec != _last_clock_sec: _last_clock_sec = cur_sec + # 每秒重读 RTC 缓存后再标脏任务栏:RTC 只有重读才会变,而此前重读是按渲染次数 + # 节流的(见 _draw_taskbar),导致空闲时时钟几十秒不动、鼠标一动就刷新。 + rtc.rtc_read_time() _mark_rows_dirty(_screen_h - tb_h_dt, tb_h_dt) if _mouse_moved: _mouse_moved = 0