fix(perf+sdk/ime): ①perf net_json 缺 network 对象闭合括号 → 全量 JSON 根对象不闭合/非法(MeowPanel /api/system jv_parse 失败根因,真机+python 双重证实)②IME flush 挂起(meow_gfx_flush_hold): 阻塞循环整周期只记脏、IME画完一次原子上屏,根治 on_tick 进度条与键盘同区两刷频闪 ③TextField on_change 只标脏不重画→改 meow_ui_invalidate 真重画,输入实时回显

meow_svc_perf fa073bf9→7ea196de; meow_ui.a d814d0ed→ece0ecdb; hello 2ce09466→f45ba051; launcher 9ca4c5e8→bd37c8b0(重链)
宿主验证: test_ime_fix/test_p1p2p3_repro/test_meow_ui_widgets 全 PASS; perf_host all 输出经 python json 校验合法
This commit is contained in:
MeowOS committed 2026-08-31 03:11:35 +08:00
1 parent 08c70aa14c
commit 896f391fee
9 files changed
+23 -5

No files matched your search

+4 -2
View File
@@ -507,7 +507,8 @@ void meow_textfield_set_placeholder(meow_widget *w, const char *placeholder)
meow_gfx_mark_dirty(w->x, w->y, w->w, w->h);
}
const char *meow_textfield_text(meow_widget *w) { return (w && w->type == W_TEXTFIELD && w->buf) ? w->buf : ""; }
/* 输入中实时把 IME 文本同步到字段缓冲 + 只刷字段区(字段在顶部,IME 键盘在底部覆盖层) */
/* 输入中实时把 IME 文本同步到字段缓冲 + 重画字段区(invalidate 重画 z 栈相交绘制物;
* flush 在 IME 阻塞循环内被挂起(meow_gfx_flush_hold),随本周期末一次原子上屏) */
static void textfield_change_cb(const char *text, void *ctx)
{
meow_widget *w = (meow_widget *)ctx;
@@ -517,7 +518,8 @@ static void textfield_change_cb(const char *text, void *ctx)
w->buf[w->maxlen - 1] = 0;
}
w->buflen = text ? (int)strlen(text) : 0;
meow_gfx_mark_dirty(w->x, w->y, w->w, w->h);
/* 只标脏不重画的话 back_buf 仍是旧文本,flush 上去的还是旧的——必须真重画 */
meow_ui_invalidate(w->x, w->y, w->w, w->h);
}
int meow_textfield_activate(meow_widget *w)
{