From 28d1a23677050095d4838bc9f205650e081765e5 Mon Sep 17 00:00:00 2001 From: TermiNexus Date: Tue, 27 Oct 2026 17:51:46 +0800 Subject: [PATCH] chore(vpui): remove [vpui] debug output Drop the first-redraw/first-flush/canvas-draw debug tracing and the related counters. --- vpsdk/vpui.vp | 73 --------------------------------------------------- 1 file changed, 73 deletions(-) diff --git a/vpsdk/vpui.vp b/vpsdk/vpui.vp index 98cadf7..4916a12 100644 --- a/vpsdk/vpui.vp +++ b/vpsdk/vpui.vp @@ -2,7 +2,6 @@ import vpsdk.window as window import vpsdk.process as process import vpsdk.devfs as devfs import vpsdk.stdlib as stdlib -import viperlib import string define TITLE_H = 32 @@ -39,13 +38,6 @@ define STICKY_N = 4 define STICKY_S = 8 define STICKY_NSEW = 15 -# 【诊断·临时】本进程首次 redraw 是否已发生(0 = 还没画过) -_redraw_logged: int = 0 -# 【诊断·临时】本进程首次 redraw 是否已走到 flush(0 = 还没到) -_flush_logged: int = 0 -# 【诊断·临时】FBCanvas 首次绘制是否已发生(0 = 还没画过) -_canvas_dbg: int = 0 - _g_wl_type: [MAX_WIDGETS]int _g_wl_side: [MAX_WIDGETS]int _g_wl_fill: [MAX_WIDGETS]int @@ -1153,15 +1145,6 @@ virtual class FBCanvas(Widget): def draw(self, fb: uint32*, fw: int, fh: int): if not self._fb: return if self._cw <= 0 or self._ch <= 0: return - # 【诊断·临时】首次绘制:确认源缓冲指针 / 尺寸 / 首像素是否已被 Scene3D 写进来 - # (源就是 app 的全局帧缓冲;px0 仍等于清屏色说明渲染线程没画或没跑)。 - global _canvas_dbg - if _canvas_dbg == 0: - _canvas_dbg = 1 - _cb: [176]char - viperlib.snprintf(&_cb, 176, "[vpui] canvas draw src=0x%lx cw=%d ch=%d w=%d h=%d px0=0x%x\n", - uint64(self._fb), self._cw, self._ch, self.w, self.h, self._fb[0]) - devfs.serial_puts(&_cb) copy_w: int = self._cw if copy_w > self.w: copy_w = self.w copy_h: int = self._ch @@ -1668,11 +1651,6 @@ virtual class Tk(Wm, Misc): def set_style(self, s: int): self.style = s - # 【诊断·临时】确认 app 侧 set_style 是否被调用、拿到的值是否非零 - if s == 0: - devfs.serial_puts("[vpui] set_style 0\n") - else: - devfs.serial_puts("[vpui] set_style NZ\n") def resizable(self, rw: int, rh: int): self.resizable_w = rw @@ -1686,11 +1664,6 @@ virtual class Tk(Wm, Misc): self.bw = w self.bh = h - TITLE_H - 2 if self.win_id < 0: - # 【诊断·临时】建窗时 self.style 是否已是期望值 - if self.style == 0: - devfs.serial_puts("[vpui] geometry style=0\n") - else: - devfs.serial_puts("[vpui] geometry style!=0\n") self.win_id = window.create_window(x, y, w, h, &self._title[0], self.style) self.buf = window.get_winbuf(self.win_id) window.set_resizable(self.win_id, self.resizable_w, self.resizable_h) @@ -1721,19 +1694,6 @@ virtual class Tk(Wm, Misc): if self.bw <= 0 or self.bh <= 0: return # 先刷新尺寸再布局:窗口 resize 后若沿用上一帧的 bw/bh,布局会滞后一帧。 self._do_layout() - # 【诊断·临时】每个进程第一次真正走到 redraw 时打一行:证明"app 侧开始绘制了", - # 并给出它拿到的缓冲地址/尺寸(与 explorer 侧 shm0/flush 对照)。 - # `_first` 只在本帧为 1:下面的 st1..st4 分段打点也只打这一次,用于定位 - # "redraw 进去了但没走到 flush" 到底停在哪一段(malloc / 填底 / 控件 / 拷回 arena)。 - global _redraw_logged - _first: int = 0 - if _redraw_logged == 0: - _redraw_logged = 1 - _first = 1 - _rlb: [160]char - viperlib.snprintf(&_rlb, 160, "[vpui] redraw win=%d bw=%d bh=%d buf=0x%lx\n", - self.win_id, self.bw, self.bh, uint64(self.buf)) - devfs.serial_puts(&_rlb) # 双缓冲:整帧先画在**进程本地**的后备缓冲里,画完一次性拷进共享 arena,再 flush。 # 为什么必须这么做:arena 正是 explorer 合成时读的那块内存(render_window_rows # 直接从它逐行 blit 上屏)。若直接往 arena 上画,合成器会在"整窗已填成背景色、 @@ -1743,50 +1703,17 @@ virtual class Tk(Wm, Misc): if self._bb: stdlib.free(rawptr(self._bb)) self._bb = uint32*(stdlib.malloc(uint64(px * 4))) self._bb_px = px - # 【诊断·临时】st1:后备缓冲分配结果(指针 0 = 失败) - if _first != 0: - _bbp: uint64 = uint64(0) - if self._bb is not None: _bbp = uint64(self._bb) - _s1b: [112]char - viperlib.snprintf(&_s1b, 112, "[vpui] st1 bb win=%d px=%d ptr=0x%lx\n", - self.win_id, px, _bbp) - devfs.serial_puts(&_s1b) tgt: uint32* = self._bb if not tgt: - # 分配失败不静默:打日志后**退回直写 arena**(画面仍能出,只是回到有撕裂的形态)。 - devfs.serial_puts("[vpui] backbuffer alloc FAILED, drawing straight into arena\n") tgt = self.buf _fill_rect(tgt, self.bw, self.bh, 0, 0, self.bw, self.bh, self.bg_color) - # 【诊断·临时】st2:整窗底色已铺完,即将进入控件绘制 - if _first != 0: - _s2b: [96]char - viperlib.snprintf(&_s2b, 96, "[vpui] st2 fill win=%d widgets=%d\n", - self.win_id, self.widget_count) - devfs.serial_puts(&_s2b) for i in range(self.widget_count): w: Widget* = self.widgets[i] - # 【诊断·临时】st3:逐个控件打点 —— 卡死时最后一个编号就是元凶 - if _first != 0: - _s3b: [112]char - viperlib.snprintf(&_s3b, 112, "[vpui] st3 w%d type=%d vis=%d\n", - i, w.widget_type, w.visible) - devfs.serial_puts(&_s3b) if w.visible: w.draw(tgt, self.bw, self.bh) if tgt != self.buf: string.memcpy(self.buf, tgt, uint64(px * 4)) - # 【诊断·临时】st4:整帧已拷进共享 arena,即将 flush - if _first != 0: - devfs.serial_puts("[vpui] st4 copied\n") window.flush(self.win_id) - # 【诊断·临时】redraw 走到"已请求合成"这一步:与前面的"进入 redraw"配对, - # 可区分"绘制中途没跑完"与"跑完了但合成器没收到"。 - global _flush_logged - if _flush_logged == 0: - _flush_logged = 1 - _flb: [96]char - viperlib.snprintf(&_flb, 96, "[vpui] flushed win=%d\n", self.win_id) - devfs.serial_puts(&_flb) def _do_layout(self): self._grid_rows = 0