chore(vpui): remove [vpui] debug output
Drop the first-redraw/first-flush/canvas-draw debug tracing and the related counters.
This commit is contained in:
1 parent
4abb0ef3f6
commit
28d1a23677
1 file changed
-73
@@ -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
|
||||
|
||||
Reference in new issue
Block a user