From 03a573870200dd052a084218c7c8c8f79413d456 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Tue, 27 Oct 2026 12:43:53 +0800 Subject: [PATCH] =?UTF-8?q?perf(window):=20=E6=9C=80=E5=B0=8F=E5=8C=96?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E7=9A=84=20FLUSH=20=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E7=BD=AE=E8=84=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 应用最小化后仍会继续绘制并发送 FLUSH;此前每条 FLUSH 都标脏窗口区域, 合成器于是每帧重画背景。最小化时直接忽略置脏即可。 --- Apps/Explorer/desk_server.vp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Apps/Explorer/desk_server.vp b/Apps/Explorer/desk_server.vp index 7fae84b..51a12e3 100644 --- a/Apps/Explorer/desk_server.vp +++ b/Apps/Explorer/desk_server.vp @@ -1371,7 +1371,9 @@ class DeskServer: viperlib.snprintf(&_fb1, 128, "[explorer] first FLUSH win=%d uy=%d h=%d\n", win, s.uy, s.h) devfs.serial_puts(&_fb1) _flush_cnt += 1 - self.mark(s.uy, s.h) + # 最小化窗口仍在后台绘制/FLUSH:不要置脏,否则合成器每帧都要重画背景。 + if s.minimized == 0: + self.mark(s.uy, s.h) elif ty == uint32(desk.DESK_REQ_ACTIVATE): self.next_z += 1 s.z_order = self.next_z