Files
MeowOS-SDK/tuku/tuku_internal.h
T
AskaEth 66e598cb62 图库: 恢复缩略图 LRU 跳过解压页缓存(M11 P2-1 回归),补启动空列表/prune 回归测试(M13 评审 P2)
- ui/library/library.c cache_prune:rebase 时丢失了 M11 c775f85 的必修保护,
  恢复 `if (mr_cache_is_page_name(de->d_name)) continue;`(在 .bmp 过滤之前)。
  解压页缓存与缩略图同目录,mrpage_* 归 page_cache 自己的 64 页/32MiB LRU 管理;
  否则档案页被缩略图 LRU 统计并删除 → 每翻页重解压,且「touch 命中→解码」窗口内
  可能被删导致解码失败。
- 回归测试(MR_LIBRARY_UI_TEST_HOOKS 接缝):test_browse_ui_host 新增 U6——
  预置 1 个最旧 mrpage_*.bmp + 65 个较新缩略图,调用 library_test_cache_prune(),
  断言 mrpage_* 保留且不计入 64 张额度、缩略图被裁到 64;已验证去掉修复时该用例
  会失败(防止再次在 rebase 中丢失)。
- 顺手补齐/校正:
  ① test_browse_ui_host 的启动路径改为 create 前就把根指向不存在的目录,真实覆盖
     「启动根不可读仍建空列表」(断言 has_list/rows==0/横幅/当前目录),不再只是声明;
  ② tuku_internal.h 的 library_at_root 注释改为「书库根(生产=MR_ROOT_DIR,测试可改根)」。
- 复验:run_tests.sh 全 PASS(73/69/90/18/108/19/85 + settings 集成 + browse UI 集成
  + zip 106 + cbz 325);run_webtoon_tests.sh 全 PASS(76/36/71/57 + 集成);
  sdk/build_sdk.sh + build_tuku.sh 零警告 MIPS32r2 静态 ELF;UI host 测试 ASan/UBSan 全绿。
2026-11-05 12:31:46 +08:00

65 lines
2.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* tuku_internal.h — 图库应用内部共享头(只 extern 声明,不定义)。
*
* 分层(照 examples/hello):
* - logic/ 纯 C(library 扫描/自然排序、reader 方向状态),不依赖 meow_ui.h,宿主可裸测;
* - ui/ 每页一个 view 文件(library/reader/settings/lock),只碰 SDK;
* - app.c main + 装配 + meow_ui_run 回调路由 + 主题监听。
*
* 页面:ACT_LIBRARY(0) 根页(保留状态栏)、ACT_READER(1) 全屏、ACT_SETTINGS(2)、ACT_LOCK(3)。
* 并行开发接缝(后续任务只填自己的文件,不改 app.c/internal.h):
* - M4 阅读器:ui/reader/reader.c 实现,方向状态用 logic/reader 的 mr_reader_get/set_direction;
* 书库点入含图目录经 mr_reader_open_dir(path) 进入本页。
* - M5 锁屏/PIN:ui/lock/lock.c 实现 lock_view_should_show();本批桩返回 0(不锁)。
*/
#ifndef TUKU_INTERNAL_H
#define TUKU_INTERNAL_H
#include <stdint.h>
#include "meow_ui.h"
#include "meow_ui_view.h"
#include "logic/library.h"
#include "logic/reader.h"
/* ---- Activity 归属(稳定 id,< MEOW_VIEW_BY_ID_MAX) ---- */
#define ACT_LIBRARY 0
#define ACT_READER 1
#define ACT_SETTINGS 2
#define ACT_LOCK 3
#define MR_ROOT_DIR "/usr/data/mnt/sd_0" /* 书库根 = TF 卡根 */
/* ---- 视图控制器(biz-UI 绑定点) ---- */
typedef struct mr_page_ctrl {
meow_view *view;
int active;
} mr_page_ctrl;
/* ---- 书库页(ui/library/library.c) ---- */
meow_view *library_view_create(void);
int library_at_root(void); /* 1=当前在书库根(生产=MR_ROOT_DIR,宿主测试可改根) */
int library_go_up(void); /* 上溯父目录:1=已上移/提示停留,0=已在文件系统 "/"(app.c 据此退出) */
void library_on_tap(int x, int y);
void library_on_swipe(int dir, int dist); /* dist=SDK on_swipe 的位移量(UP/DOWN 用) */
void library_on_touch_down(int x, int y);
void library_on_touch_move(int x, int y);
void library_on_tick(void); /* 收下后台缩略图结果并局部补位 */
/* ---- 阅读器页(ui/reader/reader.c,M4 填充) ---- */
meow_view *reader_view_create(void);
void reader_on_tap(int x, int y);
void mr_reader_open_dir(const char *path); /* 书库→阅读器的桩导航接口 */
const char *mr_reader_dir(void); /* 当前待打开目录(骨架显示用) */
/* ---- 设置页(ui/settings/settings.c) ---- */
meow_view *settings_view_create(void);
/* ---- 锁屏页(ui/lock/lock.c,M5 填充) ---- */
meow_view *lock_view_create(void);
int lock_view_should_show(void); /* 1=启动先显示锁屏;本批桩返回 0 */
/* ---- App 级(app.c) ---- */
void mr_nav_report(void); /* 向 launcher 上报当前页栈深/顶层 */
#endif /* TUKU_INTERNAL_H */