Files
MeowOS-SDK/tuku
AskaEth ceb65dfd01 图库: 修条漫长页/竖翻每帧重采样(解码几何对齐排版)+ 判据与活锁(M17 评审 P1-1/P2)
评审用真实 UI 链路实测:600x960、800x1280(长宽比 1.6)在翻页拖动与条漫模式
都是 blit+0 / scaled+5;「先适高再切条漫」scaled+10。根因是解码几何来源与排版几何
不同源:decode_long_side() 把长边钳到屏长边 720(600x960 解成 450x720),而
strip_page_height() 按屏宽算出 480x768;mode_set() 又不动 g_fit,适高/原始进条漫
100% 重采样。

修复:
- 解码目标 = 排版真正要的显示框:新增 page_geometry_at()(条漫=strip 高度、宽=视口宽;
  翻页=fit/zoom),解码计划与绘页/就绪判据同源。
- plan_decode_long() 去掉屏长边钳制,只保留 MR_PAGE_BYTES_CAP(3MB) 硬上界,
  超长条漫按比例收缩(不再因为「高度 > 屏长边」就永远对不上)。
- slot 记录本次解码的 want 几何;slot_ready() 改为几何比较:
  fit/缩放/模式变化 → 重解一次(放大再缩回、适高→条漫回到纯 blit);
  被 3MB 钳住的解码 want 不变 → 不再反复重解(大屏活锁)。
- 解码几何随 page_req 下发、随 page_res 返回:worker 不再读 g_fit/g_zoom/g_vw/g_vh。
- 峰值估算把 downscale/缩解输出一并计入(P2-3)。
- 适宽长图(竖向单独溢出)不再算平移模式:1.6 比例页原先左右 tap/横拖会变成
  「水平平移 0px」的空操作,页面根本翻不动;现在仍按翻页处理(原始档/横向溢出不变)。
- 窗口不再主动清窗口外的页图:0→1→0 来回翻不再反复重解同一页(140 页测试
  decode 次数 21→14);容量仍由 MR_SLOTS + 字节淘汰兜底。
- state_reset 复位 g_meta/g_start_at(起始页在 on_enter 入口先取走),删重复注释。

测试:test_reader_perf 夹具改成 600x960(1.6)并补 800x1280、翻页拖动、条漫、
「适高→条漫」、双击放大缩回、静止无重解、大屏 1080x1920 无活锁;test_reader_many_pages
补 meow_ui_paint_full(绘制路径覆盖,P2-5)。
2026-11-05 18:28:52 +08:00
..

tuku(os.meow.picbrowser)打包与签名

图库 App(系统包名 os.meow.picbrowser)。构建与打包:

./build_tuku.sh            # 交叉编译 picbrowser(MIPS32r2 静态)
./pack_tuku.sh             # 打包 → os.meow.picbrowser.mpk(根布局;未签名)

一键签名出包

MEOW_SIGN_KEY=/path/to/signing.key ./pack_tuku.sh
  • 工具查找顺序:$MEOW_SIGN → PATH 里的 meow_sign → $HOME/Proj/MeowOS-For-R3P2/patch_v2/meow_sign/meow_sign。
  • 私钥:$MEOW_SIGN_KEY。未设置时脚本警告并仍产出未签名包(退出码 0);但 os.meow.* 系统包无签名会被设备拒装。
  • 有工具 + 密钥时执行 meow_sign sign <mpk> <key>;若存在 <key>.pub 再执行 meow_sign verify <mpk> <key>.pub。
  • 私钥不入库、不随包分发;本仓不包含任何密钥材料。

mpk 布局

.mpk = tar.gz,条目直接在根层:

os.meow.picbrowser.mpk
├── app.json
├── picbrowser
└── <signature footer>   # 仅签名包有(Ed25519,尾部追加)

即 tar -C build/os.meow.picbrowser -czf os.meow.picbrowser.mpk app.json picbrowser—— 不带 os.meow.picbrowser/ 目录前缀,也不带 ./ 前缀。脚本在签名前用 tar -tzf 断言这一点。

签名是往 tar.gz 尾部追加 footer,签名后的 mpk 不要再跑 tar -t / gzip 之类的命令: gzip 会报 trailing garbage ignored,属预期现象,不是包损坏。要检查布局请在签名前做。

安装

把 .mpk 放到设备 TF 卡,执行 nyai install os.meow.picbrowser.mpk; os.meow.* 包必须验签通过(footer.package == 文件名茎 == app.json.package)。