From a8ec8377edb162038a4899bca0215abd93fba9b0 Mon Sep 17 00:00:00 2001 From: MeowOS Date: Sun, 30 Aug 2026 17:01:47 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=9F=A5=E4=B8=AD=E5=BF=83=E5=A2=9E?= =?UTF-8?q?=E5=BC=BA(agent-126/127/128/130)=20+=20App=E5=86=85=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E4=B8=AD=E5=BF=83=E6=96=B9=E6=A1=88(agent-129)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 开关平移动画(时间轴180ms可打断/快照memcpy/顶28不盖状态栏) agent-126 - 音量/亮度滑条复用设置页方案(跳步+上限clamp+写DAC去抖/状态栏带仅redraw_sb清绘) agent-127 - 通知列表滚动(方向随input.swipe_invert, 滚动≠关闭, 回弹才关) agent-128 - 去音量chip(静音↔恢复last_nz, NCP_CHIP_N 5→4: WiFi/蓝牙/主题/亮度) agent-130 - meow_ui.a 零改动(d249c6e6); launcher md5 c7893faf; 宿主 90+/0warn - ④App前台划出通知中心方案: FRAMEWORK_DESIGN §10.5 + NOTIFICATION_SYSTEM §9 + MEOW_APP_SDK §6.1(M3跨进程: SDK全局状态栏下滑唤出+半程可回+点通知拉app) --- FRAMEWORK_DESIGN.md | 33 ++ MEOW_APP_SDK.md | 4 + NOTIFICATION_SYSTEM.md | 4 + patch_v2/meow_launcherd/meow_launcherd | Bin 478348 -> 482780 bytes patch_v2/meow_launcherd/meow_launcherd.c | 364 +++++++++++++++++---- patch_v2/meow_launcherd/meow_notif_panel.h | 82 ++++- patch_v2/meow_launcherd/test_notif_panel.c | 114 +++++++ 7 files changed, 542 insertions(+), 59 deletions(-) diff --git a/FRAMEWORK_DESIGN.md b/FRAMEWORK_DESIGN.md index 1ec4cf5..8cd0da8 100644 --- a/FRAMEWORK_DESIGN.md +++ b/FRAMEWORK_DESIGN.md @@ -47,6 +47,8 @@ struct ipc_hdr { /* LE */ | 0x0021 | MSG_NOTIFY_ACK | ↓ | 落库结果 | | 0x0022 | MSG_NOTIFY_DISMISS | ↑ | 撤下通知 | | 0x0023 | MSG_NOTIFY_LIST | ↓ | 下发通知清单(重同步) | +| 0x0025 | MSG_NOTIF_OPEN | ↑ | **(拟,号待 `meow_ipc.h` 回填)** App 检测到顶部下滑→请求 launcher 展开通知中心叠加会话(App 前台,见 §10.5) | +| 0x0026 | MSG_NOTIF_CLOSE | ↑ | **(拟,号待 `meow_ipc.h` 回填,可选用途)** App 告知结束/退出→launcher 收尾兜底(见 §10.5) | | 0x0030 | MSG_ACT_DECLARE | ↑ | (重)声明路由表 | | 0x0031 | MSG_ACT_QUERY | ↑ | 解析 activity 链路 | | 0x0032 | MSG_ACT_RESULT | ↓ | 返回链路 | @@ -166,6 +168,37 @@ meow_sysui(系统进程总监,meow_svcd 托管;最小依赖/不渲染/最 - **launcher 主界面 / 设置页 / 电源菜单全部迁到 SDK 控件**:逻辑/渲染走 SDK(MEOW_APP_SDK §6.1 ② App 跨 Activity 控件、§5.4 A① 分组设置表单、§5.7 B④ 面板等模板),MD3 化、日/夜主题(`display.theme_mode`)、全局 UI 统一。 - **不让 app 自建叠加**:app 一律经 SDK 标准能力;系统级叠加(状态栏/通知中心/电源菜单/全局手势)只在系统进程内实现。迁移后 launcher 与 APP 用同一套 SDK 渲染地基,观感/生命周期统一。 +### 10.5 App 前台划出通知中心(跨进程叠加会话)[源:2026-08-30] + +> 定位:补齐「全屏 App(如 hello)前台时,App 进程内顶部下滑也能唤起**由 launcher 渲染**的通知中心」。 +> 详细实现方案见 `devdocs/plan/NOTIF_CENTER_APP_OVERLAY_PLAN.md`;本节为**定案决策**(归属/归属不变/协议/会话/故障隔离)。 + +- **交互与归属(不变)**:App 前台时顶部下滑,**App 进程只负责「检测手势 + 经 IPC 上报」**;通知中心 + **仍由 launcher 渲染**(符合 §10.2「系统 UI 归 launcher」/`MEOW_APP_SDK §6.1 ③`/`NOTIFICATION_SYSTEM §9`); + **App 进程不渲染系统 UI**(不叠加状态栏/通知中心)。手势检测在 App 进程 SDK(`meow_ui_input.c` 已把 + 「起点在顶部热区+向下主导」识别为系统保留手势 `MEOW_EV_NOTIF_PULL` → 路由 `meow_ui_sys_notif_pull()`)。 +- **跨进程握手(复用现有 IPC,不新增 socket)**:复用 `AF_UNIX /usr/data/meow_ipc.sock`(`meow_ipc.h + MEOW_IPC_PATH`,launcher `ipc_thread` bind/listen)。拟新增上行消息: + - `MSG_NOTIF_OPEN`(App→launcher):App 检测到顶部下滑→请求展开通知中心叠加会话;负载 `m_notif_open_t` + (app_id/event_seq/origin_x/origin_y/hotzone/flags)。launcher 回 `MSG_ACK` 受理(best-effort,App 不强依赖)。 + - `MSG_NOTIF_CLOSE`(App→launcher,可选用途):App 告知结束/退出→launcher 收尾(清 active/SIGCONT 兜底)。 + - 号段/结构以 `meow_ipc.h` 回填为准(拟 `0x0025/0x0026`,见 §13 决策点)。 +- **launcher 叠加会话(复用电源菜单对 App 的冻结模板)**:收到 `MSG_NOTIF_OPEN`(且当前在 App 前台会话, + `launch_app` waitpid 循环内)→ **SIGSTOP App** → 读回 App 帧(`memcpy` fb0 buffer0 → back_buf,App 帧恒 + buffer0 不走 `fb_backup_player`;同 `pm_capture_app_frame`)→ 写 `/tmp/meow_notif_active`(同 + `/tmp/meow_power_menu_active`,让 watchdog 让位)→ 叠加渲染 `draw_notif_center` + `meow_ui_flush` → + **接管输入**(`open(DEV_TOUCH)`+`kp_open`,App 已冻不影响)→ 关闭(上滑/点空白/左缘左滑/点通知/物理键)→ + 恢复 App 帧 → `unlink(active)` → **SIGCONT App** → 重播输入基线。差异:背景=App 帧(非应用列表); + 关闭后回 App(非回 run_menu)。 +- **App 崩溃/卡死**:launcher 会话子循环周期用 `waitpid(pid,&st,WNOHANG)`/`kill(pid,0)` 探测;App 死→立即结束会话 + (不 SIGCONT 死进程、不恢复死帧),走既有**统一应用退出路径**归位;launcher 不崩(`kill(pid,0)` 存活检测 + 与 watchdog 让位语义同 `meow_launcherd.c` ~8533-8555)。 +- **全屏/沉浸不冲突**:全屏/收合时 SDK 顶部热区缩小为 `MEOW_SBAR_HOTZONE_FS=4`(或提示线高),**仍保留顶部 + 一处下拉入口**(`meow_ui_statusbar_hotzone()`),spec-ref §3.1/A-13/§5.1 已定「全屏下顶部下滑仍开通知中心」。 +- **与 M3 关系**:本方案是 M3「前台会话」的一个切面(App 前台会话+跨进程叠加)。**本方案先行**(握手+叠加会话+ + 故障隔离,不依赖 M3);通知点击 `target_activity` 的 activity 级跳转 / 点击通知**跨 app 启动** / nav_stack 回退 + **留 M3**(首期:点通知 = dismiss + 关面板 + SIGCONT 回当前 App)。 + --- ## 附录 A(用户追加):后台运行 / 后台播放权限 diff --git a/MEOW_APP_SDK.md b/MEOW_APP_SDK.md index 2b28101..a0d52eb 100644 --- a/MEOW_APP_SDK.md +++ b/MEOW_APP_SDK.md @@ -552,6 +552,10 @@ void meow_ui_global_remove(int id); - **SDK 提供系统组件 API 仅供系统进程链接调用**:SDK 保留系统级控件内部接口位(上面 ③);**用户 App 拿不到**、**不可自建悬浮层/全局叠加**——App 这类需求只能走 SDK 标准能力。 - **进程隔离(核心)**:SDK 负责**系统组件渲染**的进程(launcher)与负责 **APP 渲染**的进程**相互独立**——APP 卡死/崩溃时,系统 UI(launcher)**不崩**,始终可息屏/返回/下拉通知中心(对应 APPS §3.4.1 物理键全局接管、APP 禁映射)。 - **APP 侧职责**:只画自己的内容;经 IPC 上报**全屏声明**(`fullscreen`/`route..fullscreen`)、**内容区域**(inset)与**前台 activity**;系统 UI 据此做叠画 + 命中分流(§6.1 交互分层:③ 系统全局 → ② App 全局 → ① 当前 Activity 页面控件)。 +- **App 前台划出通知中心(跨进程,[源:2026-08-30])**:全屏 App 前台时顶部下滑——**App 进程 SDK 只检测手势 + (`MEOW_EV_NOTIF_PULL`→`meow_ui_sys_notif_pull()`)并经 IPC 上报**(`MSG_NOTIF_OPEN`),**不渲染系统 UI**; + 通知中心由 launcher 渲染(SIGSTOP App+读回其帧+叠加 `run_notif_center`+接管输入+关闭恢复), + 见 `FRAMEWORK_DESIGN §10.5` / `devdocs/plan/NOTIF_CENTER_APP_OVERLAY_PLAN.md`。 --- diff --git a/NOTIFICATION_SYSTEM.md b/NOTIFICATION_SYSTEM.md index 1080b84..f7b291b 100644 --- a/NOTIFICATION_SYSTEM.md +++ b/NOTIFICATION_SYSTEM.md @@ -73,6 +73,10 @@ target_activity(可选, 来自 hints) / progress(可选 int) / urgency(0-3, 缺 - **交互**:**状态栏下滑展开**(用户已定);**上滑 / 点面板外关**;**左缘返回关**(与全局左缘返回/顶部滑条按起始位置分流,见 spec-ref §5.1)。列表显示通知(app 图标 + summary + body + target Activity),点击按路由表解析跳转(M3 导航栈),下拉关闭/清除。 - **协议/约束**:遵守 freedesktop 字段(summary/body/app_icon/actions/hints/expire_timeout/replaces_id)、配额(每 App 4 类型×每类型 4、媒体单例)、TTL、转储(10s + `MeowOS/notifications/` 10MB ring)、`urgency`/`icon`/`progress`(见 §5-§8)。 - **依赖**:M2 存储 + M3 导航栈(点击跳转)+ SDK 控件基座。**阶段 B 进行中。**(叠加/与播放器帧备份的互斥边界见 DEV_NOTES #16。) +- **App 前台变体(跨进程,[源:2026-08-30])**:全屏 App 前台时,App 进程内顶部下滑也能唤起通知中心——**App + 进程只检测手势并经 IPC 上报**(`MSG_NOTIF_OPEN`,见 `FRAMEWORK_DESIGN §10.5`),**通知中心仍由 launcher + 渲染**(SIGSTOP App+读回其帧+叠加 `run_notif_center`+接管输入+关闭恢复),符合本节「渲染主体=系统进程(launcher)」。 + 仍遵守 freedesktop 字段/配额/TTL/urgency/icon/progress(§5-§8),数据在 launcher `meow_notif` 直读,不跨进程传全量。 ## 10. 分步实施建议 1. **M2a 通知存储 + 原生 IPC**:按上面的配额(category 级)+ TTL 10s 转储钩子 + 系统事件源(系统作 App)。→ 可先落地。 diff --git a/patch_v2/meow_launcherd/meow_launcherd b/patch_v2/meow_launcherd/meow_launcherd index 5be96a2a6fd5f9934c8fd9ec11b2cfd163bf396a..ee8bfbec2732236537d09d2c59b5b763dc42cb26 100755 GIT binary patch delta 155632 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

rlvC~mg!sO7k*J)U(u{+ndWoTe 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 Z S_SCROLL_SLOP=40) */ + +/* ---- 开关平移动画(§9:状态时间轴 + 快照 blit 平移,不整屏重绘)---- */ +#define NCP_ANIM_FIX 1024 /* 进度 p 的定点分母(1/1024 精度) */ +#define NCP_ANIM_MS 180 /* 单程打开/关闭时长(ms,真机可调) */ /* chip 索引 */ enum { NCP_CHIP_WIFI=0, NCP_CHIP_BT=1, NCP_CHIP_THEME=2, NCP_CHIP_BRIGHT=3, - NCP_CHIP_VOL=4, NCP_CHIP_COUNT=5 }; + NCP_CHIP_COUNT=4 }; /* 通知行快照(面板读取字段 + 缓存的 icon 句柄)。 */ typedef struct { @@ -6892,6 +6898,86 @@ static int ncp_rows_changed(void) return c != g_nrows; } +/* ---- 开关平移动画辅助(§9:快照 blit + 平移;只在 run_notif_center 内分配/释放)---- + * g_ncp_ph = 面板高 PH = fb_yres - NCP_TOP;两块快照各 PH × fb_line 字节: + * bg_snap = 进入面板时(绘制面板前)从 back_buf 行 [NCP_TOP, NCP_TOP+PH) 拍的背景(应用列表); + * panel_snap= 最终位置整面板渲染(draw_notif_center 后拍),稳态重绘后刷新。 + * 快照不可用(分配失败/无 fb)时动画降级为瞬时显示/消失(fallback)。 */ +static unsigned char *g_ncp_bg_snap = NULL; +static unsigned char *g_ncp_panel_snap = NULL; +static int g_ncp_ph = 0; + +static void ncp_snap_init(void) +{ + int ph = fb_yres - NCP_TOP; + if (ph <= 0 || fb_line <= 0) { g_ncp_ph = 0; return; } + size_t bsz = (size_t)ph * (size_t)fb_line; + g_ncp_bg_snap = malloc(bsz); + g_ncp_panel_snap = malloc(bsz); + if (!g_ncp_bg_snap || !g_ncp_panel_snap) { + free(g_ncp_bg_snap); g_ncp_bg_snap = NULL; + free(g_ncp_panel_snap); g_ncp_panel_snap = NULL; + g_ncp_ph = 0; + return; + } + g_ncp_ph = ph; +} +static void ncp_snap_free(void) +{ + free(g_ncp_bg_snap); g_ncp_bg_snap = NULL; + free(g_ncp_panel_snap); g_ncp_panel_snap = NULL; + g_ncp_ph = 0; +} + +/* 从 back_buf 行 [NCP_TOP, NCP_TOP+PH) 拷贝到 dst(行宽 fb_line)。 */ +static void ncp_snap_copy_rows(unsigned char *dst, const unsigned char *base) +{ + if (!dst || g_ncp_ph <= 0) return; + size_t row = (size_t)fb_line; + for (int i = 0; i < g_ncp_ph; i++) + memcpy(dst + (size_t)i * row, base + (size_t)i * row, row); +} +/* 拍背景(应用列表):进入面板时、面板绘制前调用。 */ +static void ncp_snap_bg(void) +{ + ncp_snap_copy_rows(g_ncp_bg_snap, fb + (size_t)NCP_TOP * fb_line); +} +/* 拍最终整面板:draw_notif_center 画完后 / 每次稳态重绘后调用。 */ +static void ncp_snap_panel(void) +{ + ncp_snap_copy_rows(g_ncp_panel_snap, fb + (size_t)NCP_TOP * fb_line); +} + +/* 重建动画帧:把 back_buf 面板区 [NCP_TOP..) 还原为「背景 + 平移后的面板」。 + * off∈[-PH,0];prev_bot=上一帧覆盖底缘(exclusive),用于关(收窄)时恢复新露出背景条。 + * 返回本帧覆盖底缘(exclusive,供调用方算脏区与传给下次)。 */ +static int ncp_anim_rebuild(int off, int prev_bot) +{ + if (!g_ncp_bg_snap || !g_ncp_panel_snap || g_ncp_ph <= 0) return NCP_TOP; + int top = NCP_TOP; + int ph = g_ncp_ph; + int cur_bot = mnp_anim_covered_bot(top, ph, off); /* ∈[top, top+ph](§9.3 裁切) */ + if (cur_bot < top) cur_bot = top; + if (cur_bot > top + ph) cur_bot = top + ph; + size_t row = (size_t)fb_line; + /* 1) 面板收窄(收回中):[cur_bot, prev_bot) 新露出 → 恢复背景(应用列表)。 */ + if (prev_bot > cur_bot) { + int b0 = prev_bot < top + ph ? prev_bot : top + ph; + for (int sy = cur_bot; sy < b0; sy++) + memcpy(fb + (size_t)sy * row, + g_ncp_bg_snap + (size_t)(sy - top) * row, row); + } + /* 2) 贴平移面板:[top, cur_bot) 从 panel_snap 行 yy = sy-(top+off) 拷回。 */ + for (int sy = top; sy < cur_bot; sy++) { + int yy = sy - (top + off); /* ∈[0, ph)(见 §9.3 裁切论证) */ + if (yy < 0) yy = 0; + if (yy >= ph) yy = ph - 1; + memcpy(fb + (size_t)sy * row, + g_ncp_panel_snap + (size_t)yy * row, row); + } + return cur_bot; +} + /* 把文本按宽度截断(UTF-8 安全:不切开多字节码),超出加 "..."。 */ static void ncp_text(int x, int y, const char *s, int size, uint32_t color, int maxw) { @@ -6937,7 +7023,7 @@ static void ncp_sb_icon(int icon, int slot_x, int cy, uint32_t col, int ink_h) g_sb_icon_cy = saved; } -/* chip 位置(5 个,居中排布)。返回下标对应 chip 的 x 左缘。 */ +/* chip 位置(4 个,居中排布)。返回下标对应 chip 的 x 左缘。 */ static int ncp_chip_x(int chip) { int total = NCP_CHIP_N * NCP_CHIP_W + (NCP_CHIP_N - 1) * NCP_CHIP_GAP; @@ -6950,7 +7036,7 @@ static int ncp_chip_hit(int chip, int tx, int ty) return (tx >= x && tx < x + NCP_CHIP_W && ty >= NCP_CHIP_Y && ty < NCP_CHIP_Y + NCP_CHIP_H); } -/* 面板当前 5 个 chip 的状态(① 能否写入/取值在 meow_settings_*;② 显示用)。 */ +/* 面板当前 4 个 chip 的状态(① 能否写入/取值在 meow_settings_*;② 显示用)。 */ static void ncp_chip_state(int chip, int *on, char *val, int vlen) { *on = 0; @@ -6971,10 +7057,6 @@ static void ncp_chip_state(int chip, int *on, char *val, int vlen) int vc = mnp_brightness_clamp(v, vmin); if (val && vlen > 0) snprintf(val, vlen, "%d%%", vc); *on = (vc >= 50); /* 过半视为"亮"态 */ - } else if (chip == NCP_CHIP_VOL) { - int v = 0; meow_settings_get_int("audio.volume", &v); - if (val && vlen > 0) snprintf(val, vlen, "%d%%", v); - *on = (v > 0); /* 非静音=开 */ } } @@ -7016,15 +7098,6 @@ static int ncp_chip_apply(int chip) g_sys.brightness = vmin; } paint_sb_right(); - } else if (chip == NCP_CHIP_VOL) { - /* 快捷音量:静音<->恢复上一次非零音量。 */ - static int last_nz = 60; - int cur = 0; meow_settings_get_int("audio.volume", &cur); - if (cur > 0) { last_nz = vol_clamp(cur); meow_settings_set_int("audio.volume", 0); } - else { meow_settings_set_int("audio.volume", vol_clamp(last_nz)); } - g_sys.vol = settings_volume_get(); - paint_sb_right(); - meow_dac_vol_flush(); /* 抬手=无条件直写真实 DAC */ } meow_settings_save(); return 0; @@ -7085,6 +7158,18 @@ static void ncp_draw_list(int scroll) } } +/* 仅重绘列表可见区(滚动专用;不整面板、不刷状态栏)。先清列表底(面板 surface_variant), + * 再画可见行 + 滚动条;只标列表带脏([NCP_LIST_TOP, NCP_LIST_BOT)),面板体其它控件 / 状态栏带 + * [0,NCP_TOP) 均不触碰 —— 满足「滚动只重绘列表可视区,绝不整屏」。 */ +static void ncp_repaint_list(int scroll) +{ + const meow_ui_theme_t *th = s_ui_theme(); + fill_rect(0, NCP_LIST_TOP, fb_xres, NCP_LIST_BOT - NCP_LIST_TOP, th->surface_variant); + ncp_draw_list(scroll); + meow_dirty_add(0, NCP_LIST_TOP, fb_xres, NCP_LIST_BOT - NCP_LIST_TOP); + meow_ui_flush(); +} + /* 绘制整个通知中心面板(画进 SDK back_buf;redraw_sb=1 时另绘状态栏在最顶)。 * 性能:面板体单独;(0..27) 状态栏只在打开/主题变化时 redraw_sb=1 重绘,交互时跳过, * 使脏区仅限面板体,绝不整屏重绘。 */ @@ -7092,8 +7177,11 @@ static void draw_notif_center(int scroll, int redraw_sb) { const meow_ui_theme_t *th = s_ui_theme(); int W = fb_xres, H = fb_yres; - fill_rect(0, 0, W, H, th->surface); - /* 面板体(状态栏之下 surface_variant) */ + /* 状态栏带 [0,NCP_TOP) 仅当 redraw_sb=1(打开/主题变化)时清底,随后由下方 draw_statusbar() + * 覆盖重绘;redraw_sb=0(交互重绘,如拖滑条)时**绝不触碰**——保留 back_buf 中 paint_sb_right() + * 已绘好的状态栏,避免被清成 surface 底仍被 blit → 状态栏数值闪烁/消失(真机①修复)。 + * 面板体(状态栏之下 surface_variant)态恒整片铺。 */ + if (redraw_sb) fill_rect(0, 0, W, NCP_TOP, th->surface); fill_rect(0, NCP_TOP, W, H - NCP_TOP, th->surface_variant); /* 把手 */ @@ -7104,7 +7192,7 @@ static void draw_notif_center(int scroll, int redraw_sb) ui_draw(W - 24 - ui_width("点空白关闭", 16), NCP_TITLE_Y + 2, "点空白关闭", th->on_surface_variant, 16); /* 快捷开关行 */ - static const char *chip_lbl[NCP_CHIP_COUNT] = { "WiFi", "蓝牙", "主题", "亮度", "音量" }; + static const char *chip_lbl[NCP_CHIP_COUNT] = { "WiFi", "蓝牙", "主题", "亮度" }; int total_chip = NCP_CHIP_N * NCP_CHIP_W + (NCP_CHIP_N - 1) * NCP_CHIP_GAP; int chip_x0 = (W - total_chip) / 2; for (int c = 0; c < NCP_CHIP_N; c++) { @@ -7122,10 +7210,9 @@ static void draw_notif_center(int scroll, int redraw_sb) else { ncp_dot(icon_cx + 16, icon_cy, 11, fg); ncp_dot(icon_cx + 16, icon_cy, 6, bg); } } else if (c == NCP_CHIP_BRIGHT) ncp_sb_icon(SB_I_BRIGHT, icon_cx, icon_cy, fg, 22); - else if (c == NCP_CHIP_VOL) ncp_sb_icon(SB_I_VOL, icon_cx, icon_cy, fg, 22); char label[24]; snprintf(label, sizeof label, "%s", chip_lbl[c]); - if (val[0] && (c == NCP_CHIP_BRIGHT || c == NCP_CHIP_VOL)) + if (val[0] && c == NCP_CHIP_BRIGHT) snprintf(label, sizeof label, "%.9s", val); /* chip 下示值 */ ui_draw(cx + (NCP_CHIP_W - ui_width(label, 14)) / 2, NCP_CHIP_Y + NCP_CHIP_H - 18, label, fg, 14); @@ -7172,25 +7259,37 @@ static int ncp_slider_band(int tx, int ty, int sy) ty >= sy - 30 && ty <= sy + 24); } -/* 滑条值应用(拖动实时 set_*,save_now=抬手落盘;亮度 clamp、音量 clamp)。 */ -static void ncp_slider_apply(int which, int tx, int save_now) +/* 滑条值应用(拖动实时 set_*,save_now=抬手落盘)。 + * 复用设置页方案:亮度 clamp [bmin,100];音量 vol_clamp 上限 + 跳步吸附 + DAC 节流去抖。 + * 返回 1=值实际变更(需重绘面板/刷状态栏);0=吸附+钳制后与当前已提交值相同(懒跳过: + * 不写 DAC/背光、不刷状态栏、不标脏)→ 拖动去抖,消除逐事件刷状态栏/DAC 的卡顿(真机②修复)。 + * 亮度写背光仅 sysfs 不引额外节流;音量写 DAC 节流(meow_dac_vol_write_throttled/flush 同 s_commit)。 */ +static int ncp_slider_apply(int which, int tx, int save_now) { if (which == 1) { int bmin = 1; meow_settings_get_int("display.brightness_min", &bmin); int v = mnp_slider_val_from_x(tx, NCP_SLIDER_X, NCP_SLIDER_W, bmin, 100); + v = mnp_brightness_clamp(v, bmin); /* 下限 brightness_min(≥1)、上限 100 */ + int cur = 0; meow_settings_get_int("display.brightness", &cur); + if (!save_now && v == mnp_brightness_clamp(cur, bmin)) return 0; /* 去抖:值未变(含 clamp 后) */ meow_settings_set_int("display.brightness", v); write_brightness(v); - g_sys.brightness = v; + g_sys.brightness = v; /* 状态栏数值源=最近写入值(含 clamp 后) */ paint_sb_right(); if (save_now) meow_settings_save(); - } else if (which == 2) { - int v = mnp_slider_val_from_x(tx, NCP_SLIDER_X, NCP_SLIDER_W, 0, - vol_clamp(settings_volume_max)); + return 1; + } else { + int vmax = vol_clamp(settings_volume_max); /* 音量上限(尊重 audio.volume_max) */ + int v = mnp_slider_val_from_x(tx, NCP_SLIDER_X, NCP_SLIDER_W, 0, vmax); + v = mnp_step_round(v, settings_volume_step); /* 跳步吸附(默认 step=1 → 连续同设置页) */ + v = vol_clamp(v); /* 0..MEOW_VOL_MAX + 上限 clamp */ + if (!save_now && v == settings_volume_get()) return 0; /* 去抖:值未变跳过写 DAC/刷状态栏 */ meow_settings_set_int("audio.volume", v); - g_sys.vol = settings_volume_get(); + g_sys.vol = settings_volume_get(); /* 状态栏数值源=最近写入值(含 clamp 后) */ paint_sb_right(); - if (save_now) { meow_dac_vol_flush(); meow_settings_save(); } - else meow_dac_vol_write_throttled(); + if (save_now) { meow_dac_vol_flush(); meow_settings_save(); } /* 抬手=无条件直写 DAC */ + else meow_dac_vol_write_throttled();/* 拖动中=墙钟节流写 DAC */ + return 1; } } @@ -7243,7 +7342,14 @@ static void run_notif_center(struct app *apps, int napps, int *want_launch) int td = 0, td_ok = 0, tdx = -1, tdy = -1, tlx = -1, tly = -1; int drag_slider = 0; /* 0=无, 1=亮度, 2=音量 */ - int closed = 0; /* 本次触发放置:关面板(跳回 run_menu) */ + /* 通知列表拖动滚动(方向遵循 input.swipe_invert,与设置页列表同式;关闭手势区分见 §11.3) */ + int scroll_drag = 0; /* 是否处于列表区拖动滚动手势 */ + int scroll_base = 0; /* 进入滚动时锁定的 list_scroll 基准(连续跟手,防触发瞬间跳变) */ + int scroll_y0 = 0; /* 按下原点纵向坐标 */ + int scroll_invert = 0; /* input.swipe_invert(0=标准方向) */ + int scroll_rebound = 0; /* 拖到顶/底仍继续拖(回弹)→ 抬手按关闭语义收起 */ + int list_paint = 0; /* 仅列表区重绘(滚动专用,不整面板/不刷状态栏) */ + int closed = 0; /* 非动画路径的兜底关面板(快照不可用时瞬时退出) */ int after_modal = 0; /* 电源菜单返回:整帧重绘还原被 dim 的状态栏 */ int wake_suppress = 0; unsigned long long pwr_hold_at = 0; @@ -7251,17 +7357,42 @@ static void run_notif_center(struct app *apps, int napps, int *want_launch) int need_sb = 1; /* 打开/主题变化时重绘状态栏;其余交互跳过(脏区只限面板体) */ - /* 首次绘制 */ + /* 开关平移动画状态(§9):anim_p∈[0,NCP_ANIM_FIX],anim_target 为意图(FIX=开、0=关)。 + * 仅当快照可用(anim_ok)才做平滑动画;否则降级为瞬时显示/消失(closed 兜底)。 */ + int anim_p = 0, anim_target = NCP_ANIM_FIX; + int anim_last_target = NCP_ANIM_FIX; /* 记录上一步 anim_target(用于检测「意图切换」重置计时) */ + unsigned long long anim_last = 0; + int anim_prev_bot = NCP_TOP; /* 上一帧面板覆盖底缘(exclusive;初始=NCP_TOP=未覆盖) */ + int anim_ok = 0; + + /* 首次绘制:先拍背景(应用列表)→ 渲染最终位置整面板 → 拍面板快照 → 还原背景到 p=0 + * 起点(面板隐藏、先露应用列表),随后进入循环由动画推进 p:0→FIX 滑入。 */ ncp_refresh_rows(); list_scroll = mnp_scroll_clamp(0, g_nrows * NCP_ROW_H, NCP_LIST_BOT - NCP_LIST_TOP); - draw_notif_center(list_scroll, 1); - meow_dirty_full(); meow_ui_flush(); + ncp_snap_init(); + if (g_ncp_ph > 0) { + anim_ok = 1; + ncp_snap_bg(); /* 背景(应用列表)在面板绘制前拍 */ + draw_notif_center(list_scroll, 1); /* 渲染最终位置整面板 → back_buf */ + ncp_snap_panel(); /* 拍面板快照 */ + /* 起点 p=0:按「上一帧为全覆盖(NCP_TOP+PH)」重建 → 整段还原为背景(面板隐藏) */ + anim_prev_bot = ncp_anim_rebuild(mnp_anim_off(0, NCP_ANIM_FIX, g_ncp_ph), + NCP_TOP + g_ncp_ph); + meow_dirty_add(0, NCP_TOP, fb_xres, fb_yres - NCP_TOP); + meow_ui_flush(); + } else { + draw_notif_center(list_scroll, 1); + meow_dirty_full(); meow_ui_flush(); + } need_sb = 0; + anim_last = now_ms(); + + int need_paint = 0; /* 持久:跨 tick 保持(动画进行中延迟到稳态再画) */ for (;;) { unsigned long long now = now_ms(); if (sigterm_flag) break; - int need_paint = 0; + int animating = anim_ok && (anim_p != anim_target); /* 自动息屏(同设置页语义) */ if (meow_auto_slept && !meow_screen_on) { @@ -7295,8 +7426,15 @@ static void run_notif_center(struct app *apps, int napps, int *want_launch) m_prev_play = kp_is_down(&kp_keys, KEY_PLAYPAUSE); touch_cooldown_until = now_ms() + 300; td = 0; td_ok = 0; drag_slider = 0; tlx = tly = -1; + scroll_drag = 0; scroll_base = 0; scroll_y0 = 0; + scroll_invert = 0; scroll_rebound = 0; list_paint = 0; + /* 唤醒:面板直接就位(不重播滑入动画,面板早已打开);重拍快照防内容已变 */ + anim_p = anim_target = anim_last_target = NCP_ANIM_FIX; + if (anim_ok) anim_prev_bot = NCP_TOP + g_ncp_ph; draw_notif_center(list_scroll, 1); + if (anim_ok) ncp_snap_panel(); meow_dirty_full(); meow_ui_flush(); + anim_last = now_ms(); need_sb = 0; } usleep(POLL_MS * 1000); @@ -7376,6 +7514,9 @@ static void run_notif_center(struct app *apps, int napps, int *want_launch) /* 触摸 */ if (tfd >= 0 && meow_screen_on) { + /* 面板是否就位(稳态开):就位才允许控件交互;动画中抑制 chip/滑条/通知行命中 + * (面板在滑,控件坐标已定但只部分可见,命中会误触——见 §9.5)。 */ + int open_settled = anim_ok ? (anim_target >= NCP_ANIM_FIX && anim_p >= NCP_ANIM_FIX) : 1; struct pollfd pfd = { tfd, POLLIN, 0 }; if (poll(&pfd, 1, 0) > 0) { while (read(tfd, evbuf16, sizeof evbuf16) == 16) { @@ -7386,18 +7527,49 @@ static void run_notif_center(struct app *apps, int napps, int *want_launch) else if (code == ABS_Y || code == ABS_MT_POSITION_Y) tly = val; if (td && !td_ok && tlx >= 0 && tly >= 0) { tdx = tlx; tdy = tly; td_ok = 1; - /* 按下原点落在滑条带 → 开始拖动 */ - if (drag_slider == 0) { - if (ncp_slider_band(tlx, tly, NCP_SL1_Y)) { drag_slider = 1; ncp_slider_apply(1, tlx, 0); } - else if (ncp_slider_band(tlx, tly, NCP_SL2_Y)) { drag_slider = 2; ncp_slider_apply(2, tlx, 0); } + scroll_y0 = tdy; /* 列表拖动基准:按下原点(进滚动时才锁 scroll_base) */ + /* 按下原点落在滑条带 → 开始拖动(仅面板就位) */ + if (open_settled && drag_slider == 0) { + if (ncp_slider_band(tlx, tly, NCP_SL1_Y)) { drag_slider = 1; if (ncp_slider_apply(1, tlx, 0)) need_paint = 1; } + else if (ncp_slider_band(tlx, tly, NCP_SL2_Y)) { drag_slider = 2; if (ncp_slider_apply(2, tlx, 0)) need_paint = 1; } } } - if (drag_slider == 1 && td_ok) { ncp_slider_apply(1, tlx, 0); need_paint = 1; } - else if (drag_slider == 2 && td_ok) { ncp_slider_apply(2, tlx, 0); need_paint = 1; } + if (drag_slider == 1 && td_ok) { if (ncp_slider_apply(1, tlx, 0)) need_paint = 1; } + else if (drag_slider == 2 && td_ok) { if (ncp_slider_apply(2, tlx, 0)) need_paint = 1; } + /* 列表滚动(§11):面板就位(open_settled)+ 起点在列表区 + 内容溢出 + + * 纵向位移达 slop → 进滚动。方向遵循 input.swipe_invert(与设置页列表同式); + * 拖到顶/底继续拖 → 回弹标记。动画进行中(面板在滑,未就位)不启动滚动。 */ + if (open_settled && td_ok && !scroll_drag && drag_slider == 0) { + int ddy = tly - scroll_y0; + if (ddy >= S_SCROLL_SLOP || ddy <= -S_SCROLL_SLOP) { + int total = g_nrows * NCP_ROW_H; + int view = NCP_LIST_BOT - NCP_LIST_TOP; + if (mnp_scroll_max(total, view) > 0 && + tdy >= NCP_LIST_TOP && tdy < NCP_LIST_BOT) { + scroll_drag = 1; + meow_settings_get_bool("input.swipe_invert", &scroll_invert); + scroll_base = mnp_scroll_base(list_scroll, ddy, scroll_invert); + scroll_rebound = 0; + } + } + } + if (scroll_drag && td_ok) { + int total = g_nrows * NCP_ROW_H; + int view = NCP_LIST_BOT - NCP_LIST_TOP; + int target = mnp_scroll_target(scroll_base, tly - scroll_y0, scroll_invert); + list_scroll = mnp_scroll_clamp(target, total, view); + scroll_rebound = mnp_scroll_rebound(target, mnp_scroll_max(total, view), + NCP_SCROLL_REBOUND_TOL); + list_paint = 1; + } } else if (type == EV_KEY && code == BTN_TOUCH) { if (val && !td) { if (now_ms() < touch_cooldown_until) { tlx = tly = -1; } - else { td = 1; td_ok = 0; tlx = -1; tly = -1; drag_slider = 0; } + else { + td = 1; td_ok = 0; tlx = -1; tly = -1; drag_slider = 0; + scroll_drag = 0; scroll_base = 0; scroll_y0 = 0; + scroll_invert = 0; scroll_rebound = 0; + } } else if (!val && td) { td = 0; if (drag_slider) { /* 滑条拖动结束 → 落盘 */ @@ -7406,9 +7578,29 @@ static void run_notif_center(struct app *apps, int napps, int *want_launch) } else if (td_ok) { int dx = tlx - tdx, dy = tly - tdy; int adx = dx < 0 ? -dx : dx, ady = dy < 0 ? -dy : dy; - /* 左缘左滑 = 关闭(复用全局左缘返回语义) */ - if (meow_edge_back(tdx, dx, dy)) { closed = 1; break; } - if (adx < 60 && ady < 60) { /* tap */ + /* 左缘左滑 = 关闭(复用全局左缘返回语义;动画中同样可打断)—— + * 优先于列表滚动落定,保「左缘返回关」语义不受滚动影响 */ + if (meow_edge_back(tdx, dx, dy)) { + if (anim_ok) anim_target = 0; else closed = 1; + break; + } + if (scroll_drag) { + /* 列表滚动落定:最终 clamp 到边界(拖动中已实时跟手,此处确认终值); + * 若回弹(拖到顶/底继续拖)→ 按「上滑/下滑关闭」收起(§11.3)。 + * 绝不把「滑列表」误判成「上滑关闭」——scroll_drag 一旦置位即跳过 + * 下方 mnp_vertical_up 关闭判定。 */ + int total = g_nrows * NCP_ROW_H; + int view = NCP_LIST_BOT - NCP_LIST_TOP; + int target = mnp_scroll_target(scroll_base, tly - scroll_y0, scroll_invert); + list_scroll = mnp_scroll_clamp(target, total, view); + if (scroll_rebound) { + if (anim_ok) anim_target = 0; else closed = 1; + break; + } + list_paint = 1; + scroll_base = 0; scroll_y0 = 0; scroll_rebound = 0; scroll_invert = 0; + } else if (adx < 60 && ady < 60) { /* tap */ + if (animating) break; /* 动画进行中:tap 忽略(控件命中会误触,见 §9.5) */ int tx = tdx, ty = tdy; int hit = 0; for (int c = 0; c < NCP_CHIP_COUNT; c++) @@ -7416,18 +7608,26 @@ static void run_notif_center(struct app *apps, int napps, int *want_launch) if (ncp_chip_apply(c)) need_sb = 1; /* 主题变化 → 重刷状态栏 */ hit = 1; need_paint = 1; break; } - if (!hit && ncp_slider_band(tx, ty, NCP_SL1_Y)) { ncp_slider_apply(1, tx, 1); hit = 1; need_paint = 1; } - else if (!hit && ncp_slider_band(tx, ty, NCP_SL2_Y)) { ncp_slider_apply(2, tx, 1); hit = 1; need_paint = 1; } + if (!hit && ncp_slider_band(tx, ty, NCP_SL1_Y)) { hit = 1; if (ncp_slider_apply(1, tx, 1)) need_paint = 1; } + else if (!hit && ncp_slider_band(tx, ty, NCP_SL2_Y)) { hit = 1; if (ncp_slider_apply(2, tx, 1)) need_paint = 1; } if (!hit && ty >= NCP_LIST_TOP && ty < NCP_LIST_BOT) { if (ncp_row_tap(tx, ty, list_scroll, want_launch)) { hit = 1; - closed = 1; /* 点击通知:dismiss + 记录启动 → 关面板 */ + if (anim_ok) anim_target = 0; /* 点击通知:dismiss + 记录启动 → 滑出收回 */ + else closed = 1; break; } } - if (!hit) { closed = 1; break; } /* 点空白(标题/把手/提示/分隔线/列表外)→ 关闭 */ + if (!hit) { /* 点空白(标题/把手/提示/分隔线/列表外)→ 关闭 */ + if (anim_ok) anim_target = 0; else closed = 1; + break; + } } else if (mnp_vertical_up(dx, dy, MENU_SWIPE_THRESH)) { - closed = 1; break; /* 面板内上滑 → 关闭 */ + if (anim_ok) anim_target = 0; else closed = 1; /* 面板内上滑 → 关闭 */ + break; + } else if (anim_ok && anim_target == 0 && + mnp_top_swipe_down(tdx, tdy, dx, dy, SB_BAR_H, MENU_SWIPE_THRESH)) { + anim_target = NCP_ANIM_FIX; /* 收回途中顶部热区下滑 → 重新打开(平滑转向) */ } /* 其余横滑/下滑忽略(不关闭不动作) */ } @@ -7437,7 +7637,7 @@ static void run_notif_center(struct app *apps, int napps, int *want_launch) } } } - if (closed) break; /* 上滑 / 点空白 / 左缘左滑 / 通知点击 → 关面板返回 run_menu */ + if (closed) break; /* 非动画兜底:上滑 / 点空白 / 左缘左滑 / 通知点击 → 关面板返回 run_menu */ /* 列表变化检测:~500ms 对比 count;变化重采集 + 重绘列表区 */ if (now - last_listchk >= 500) { @@ -7451,16 +7651,63 @@ static void run_notif_center(struct app *apps, int napps, int *want_launch) } } + /* 开关动画推进(§9:状态时间轴 + 快照 blit 平移;present 尊重 SDK 帧率门控,动画不更高频)。 + * 每 tick 依壁钟差推进 p;改 anim_target 即平滑转向(可打断,不跳变)。 */ + if (anim_ok && anim_p != anim_target) { + unsigned long long anow = now_ms(); + int dt; + if (anim_target != anim_last_target) { + /* 意图刚切换(打开↔关闭):重置计时起点,本 tick 不计时, + * 避免稳态闲置后 anim_last 陈旧导致首帧就跳到目标(不产生动画)。 */ + anim_last_target = anim_target; + anim_last = anow; + dt = 0; + } else { + dt = (int)((anow > anim_last) ? (anow - anim_last) : 0); + anim_last = anow; + } + int np = mnp_anim_step(anim_p, anim_target, NCP_ANIM_FIX, + (unsigned long long)dt, NCP_ANIM_MS); + if (np != anim_p) { + anim_p = np; + int off = mnp_anim_off(anim_p, NCP_ANIM_FIX, g_ncp_ph); + int cur_bot = ncp_anim_rebuild(off, anim_prev_bot); + int maxb = (anim_prev_bot > cur_bot) ? anim_prev_bot : cur_bot; + anim_prev_bot = cur_bot; + /* 只刷面板矩形 + 新露出的条(不整屏;不含状态栏 0-27 带) */ + meow_dirty_add(0, NCP_TOP, fb_xres, maxb - NCP_TOP); + meow_ui_flush(); + } + } + if (anim_ok && anim_target == 0 && anim_p == 0) break; /* 滑出到 0 → 真正退出子循环 */ + /* 重绘(面板体区域;状态栏 0-27 由 draw_statusbar 单独维护,不落入此脏区)。 * need_sb=1(打开/主题变化)时 draw_notif_center 内另绘状态栏并标其脏——脏区仍 - * 只含「面板体 + 28px 状态栏」两带,绝不整屏重绘。 */ + * 只含「面板体 + 28px 状态栏」两带,绝不整屏重绘。 + * 动画进行中:不画稳态面板(会覆盖正在滑动的帧),need_paint 保持到到位后再补画。 */ if (need_paint) { last_act = now; - draw_notif_center(list_scroll, need_sb); - need_sb = 0; - if (after_modal) { meow_dirty_full(); after_modal = 0; } - else meow_dirty_add(0, NCP_TOP, fb_xres, fb_yres - NCP_TOP); - meow_ui_flush(); + if (!(anim_ok && anim_p != anim_target)) { + draw_notif_center(list_scroll, need_sb); + need_sb = 0; + if (anim_ok) ncp_snap_panel(); /* 面板内容已变:刷新快照(供滑出动画用) */ + if (after_modal) { meow_dirty_full(); after_modal = 0; } + else meow_dirty_add(0, NCP_TOP, fb_xres, fb_yres - NCP_TOP); + meow_ui_flush(); + need_paint = 0; + list_paint = 0; /* 整面板已含列表:滚动重绘标记随之清除 */ + } + /* 否则动画进行中:保留 need_paint,到位后(下一稳态 tick)补画最终面板 */ + } + /* 仅列表区重绘(滚动专用:只刷列表带,不整面板/不刷状态栏;同受动画门控, + * 动画进行中不画稳态,list_paint 保持到到位后再补画一次列表终值)。 */ + if (list_paint) { + last_act = now; + if (!(anim_ok && anim_p != anim_target)) { + ncp_repaint_list(list_scroll); + if (anim_ok) ncp_snap_panel(); /* 列表已变:刷新面板快照(供滑出动画用) */ + list_paint = 0; + } } /* ~1s 状态栏时钟 */ if (now - last_tick >= 1000) { @@ -7473,6 +7720,7 @@ static void run_notif_center(struct app *apps, int napps, int *want_launch) } if (tfd >= 0) close(tfd); kp_close(&kp_power); kp_close(&kp_keys); + ncp_snap_free(); /* 释放动画快照(退出即回收,不驻留) */ ncp_rows_free(); logmsg("notification center closed"); } diff --git a/patch_v2/meow_launcherd/meow_notif_panel.h b/patch_v2/meow_launcherd/meow_notif_panel.h index 4912891..34dbadb 100644 --- a/patch_v2/meow_launcherd/meow_notif_panel.h +++ b/patch_v2/meow_launcherd/meow_notif_panel.h @@ -59,6 +59,18 @@ static inline int mnp_slider_val_from_x(int px, int sx, int sw, int min, int max return v; } +/* 滑条值的「跳步」吸附:把 v 取到最近的 step 整数倍。 + * step<=1 原样返回(默认 audio.volume_step=1 ⇒ 连续,与设置页滑条逐值行为一致); + * step>1(可配 1-5)时吸附到最近整数倍,减少拖动逐值写 DAC/刷状态栏(音量滑条卡顿修复)。 + * 不处理负数(音量/亮度值域均 ≥0);结果应再经 mnp_brightness_clamp / vol_clamp。 */ +static inline int mnp_step_round(int v, int step) +{ + if (step <= 1) return v; + int r = ((v + step / 2) / step) * step; + if (r < 0) r = 0; + return r; +} + /* ---- 亮度 clamp ---- */ /* 亮度 clamp:下限 vmin(=display.brightness_min,≥1 防黑屏)、上限 100(防闪屏)。 @@ -103,7 +115,7 @@ static inline int mnp_row_at(int y, int list_top, int list_bot, int row_h) return r; } -/* 列表滚动 clainmp:把 scroll 钳到 [0, total-view]。content 高度=total(总行数*row_h)。 */ +/* 列表滚动 clamp:把 scroll 钳到 [0, total-view]。content 高度=total(总行数*row_h)。 */ static inline int mnp_scroll_clamp(int scroll, int total, int view) { if (total <= view) return 0; @@ -113,4 +125,72 @@ static inline int mnp_scroll_clamp(int scroll, int total, int view) return scroll; } +/* ---- 列表拖动滚动(方向遵循 input.swipe_invert,与 launcher 设置页列表同式)---- */ + +/* 最大滚动位移:total=内容总高、view=可视区高。内容不足视口时恒 0(不滚动)。 */ +static inline int mnp_scroll_max(int total, int view) +{ + return (total > view) ? (total - view) : 0; +} + +/* 进入滚动时锁定的 scroll 基准(保证触发那一刻不跳变,连续跟手)。 + * scroll=进入时 scroll;d=进入时位移(当前 y-原点 y,屏幕 y 向下为正); + * invert=0(标准:手指上滑→scroll 增大=内容向上滚看后面项)映射 -d;invert=1(反向)映射 +d。 + * 与设置页 run_settings_page 的 `scroll_base = scroll_off + (invert ? -ddy : ddy)` 同式。 */ +static inline int mnp_scroll_base(int scroll, int d, int invert) +{ + return scroll + (invert ? -d : d); +} + +/* 由基准 + 当前位移推目标 scroll(含方向映射);结果交 mnp_scroll_clamp 钳到 [0,max]。 + * 与设置页 `scroll_off = clamp(scroll_base + (invert ? dydt : -dydt))` 同式。 */ +static inline int mnp_scroll_target(int base, int d, int invert) +{ + return base + (invert ? d : -d); +} + +/* 是否已越过滚动边界成「回弹」(拖到顶/底仍继续拖)——用于列表滚满后继续拖 → 关闭。 + * target=未钳位目标 scroll;max=mnp_scroll_max(...);tol=回弹容差(px,超过才认, + * 避免在边界小幅抖动即误关)。返回 1=已越过边界(回弹,可触发关闭语义)。 */ +static inline int mnp_scroll_rebound(int target, int max, int tol) +{ + return (target < -tol || target > max + tol); +} + +/* ---- 开关平移动画(状态时间轴,纯逻辑,可单测)---- + * 通知中心面板「打开/关闭滑入/收回」= 面板内容整体做 y-offset 平移(参照 SDK §5.2 快照 blit 平移)。 + * 状态:progress p ∈ [0, fix],0=全隐藏(面板内容在面板区上缘之外),fix=到位(offset_y=0)。 + * 本组函数只做标量时间轴/裁切计算,不碰 fb/几何——供 launcher(meow_launcherd.c 内嵌面板)与 + * 宿主单测(test_notif_panel.c)共用同一份实现,避免两端漂移。 */ + +/* 进度 p([0,fix])→ 面板内容 y-offset(px,∈[-ph,0])。 + * p=0 → -ph(内容上移出面板区,全隐藏);p=fix → 0(到位)。线性。 */ +static inline int mnp_anim_off(int p, int fix, int ph) +{ + return (int)((long long)(p - fix) * ph / fix); +} + +/* 沿时间轴单向推进:dt_ms(距上次 tick 的单调毫秒差)→ 新 p(向 target 逼近并 clamp)。 + * fix=进度分母(如 1024);dur_ms=单程时长(ms)。dt_ms<=0 或已达 target 时返回原 p。 + * 为保证单调前进(防快循环 dt 为 0 卡住),dt_ms>0 且未到位时 step 至少为 1。 + * 反转(p>target)即回退,同样逐帧平滑。 */ +static inline int mnp_anim_step(int p, int target, int fix, unsigned long long dt_ms, int dur_ms) +{ + if (dt_ms == 0) return p; + if (p == target) return p; + long long step = (long long)dt_ms * fix / (dur_ms > 0 ? dur_ms : 1); + if (step < 1) step = 1; + if (target > p) { p += (int)step; if (p > target) p = target; } + else { p -= (int)step; if (p < target) p = target; } + return p; +} + +/* 面板覆盖区底缘(screen y,exclusive):off 时面板可见区 = [top, top+ph+off)。 + * off∈[-ph,0] ⇒ 结果∈[top, top+ph]。top 通常=状态栏高(NCP_TOP=28,不盖状态栏)。 + * 调用方用「顶=top、高=covered_bot-top」作为脏区上缘/裁切范围。 */ +static inline int mnp_anim_covered_bot(int top, int ph, int off) +{ + return top + ph + off; +} + #endif /* MEOW_NOTIF_PANEL_H */ diff --git a/patch_v2/meow_launcherd/test_notif_panel.c b/patch_v2/meow_launcherd/test_notif_panel.c index 2355798..ed40165 100644 --- a/patch_v2/meow_launcherd/test_notif_panel.c +++ b/patch_v2/meow_launcherd/test_notif_panel.c @@ -96,6 +96,18 @@ static void test_pure_logic(void) CHECK(mnp_slider_val_from_x(0, 20, 440, 1, 100) == 1, "slider x out-left clamped to min"); CHECK(mnp_slider_val_from_x(999, 20, 440, 1, 100) == 100, "slider x out-right clamped to max"); + /* mnp_step_round:跳步吸附(音量滑条去抖/减少逐值写 DAC) */ + CHECK(mnp_step_round(37, 1) == 37, "step_round step=1 -> unchanged (continuous, same as settings slider)"); + CHECK(mnp_step_round(0, 1) == 0, "step_round step=1 -> 0 kept"); + CHECK(mnp_step_round(37, 5) == 35, "step_round 37 step=5 -> 35 (nearest multiple of 5)"); + CHECK(mnp_step_round(38, 5) == 40, "step_round 38 step=5 -> 40 (rounds up to nearest)"); + CHECK(mnp_step_round(50, 5) == 50, "step_round 50 step=5 -> exactly on step"); + CHECK(mnp_step_round(0, 5) == 0, "step_round 0 step=5 -> 0"); + CHECK(mnp_step_round(100, 5) == 100, "step_round 100 step=5 -> 100"); + CHECK(mnp_step_round(99, 5) == 100, "step_round 99 step=5 -> 100 (rounds up to max)"); + CHECK(mnp_step_round(2, 4) == 4, "step_round 2 step=4 -> 4 (round to nearest multiple)"); + CHECK(mnp_step_round(-3, 5) == 0, "step_round negative clamps to 0 (value domain >=0)"); + /* mnp_brightness_clamp */ CHECK(mnp_brightness_clamp(0, 1) == 1, "brightness clamp below min -> min"); CHECK(mnp_brightness_clamp(150, 1) == 100, "brightness clamp above 100 -> 100"); @@ -126,6 +138,106 @@ static void test_pure_logic(void) CHECK(mnp_scroll_clamp(5, 400, 444) == 0, "content fits view -> 0"); } +/* P4 通知列表滚动:方向映射(input.swipe_invert)+ 回弹判定(纯逻辑,header-only)。 + * 语义与设置页列表一致:invert=0 手指上滑(d<0) → target 增大(内容上滚看后面项); + * invert=1(反向)手指上滑 → target 减小。进滚动锁 base 保证触发瞬间不跳变。 */ +static void test_scroll_pure(void) +{ + fprintf(stderr, "--- P4 notification list scroll (swipe_invert direction + rebound) ---\n"); + int total = 2000, view = 444, max_scroll = total - view; /* 1556 */ + + /* mnp_scroll_max */ + CHECK(mnp_scroll_max(2000, 444) == 1556, "scroll_max overflow -> total-view"); + CHECK(mnp_scroll_max(400, 444) == 0, "scroll_max content fits -> 0"); + CHECK(mnp_scroll_max(444, 444) == 0, "scroll_max equal -> 0"); + CHECK(mnp_scroll_max(445, 444) == 1, "scroll_max 1px over -> 1"); + + /* mnp_scroll_base:进滚动锁基准(invert=0 同设置页 `scroll + d`;invert=1 反向) */ + CHECK(mnp_scroll_base(100, -45, 0) == 55, "base invert=0 finger-up -> scroll+d"); + CHECK(mnp_scroll_base(100, -45, 1) == 145, "base invert=1 finger-up -> scroll-d"); + + /* mnp_scroll_target:触发瞬间 target 回到原 scroll(连续跟手,不跳变) */ + CHECK(mnp_scroll_target(55, -45, 0) == 100, "target invert=0 at engage -> back to scroll"); + CHECK(mnp_scroll_target(145, -45, 1) == 100, "target invert=1 at engage -> back to scroll"); + + /* 方向映射:invert=0 手指持续上滑(更负) → target 增大;invert=1 → target 减小 */ + CHECK(mnp_scroll_target(55, -200, 0) == 255, "target invert=0 finger-up more -> increases"); + CHECK(mnp_scroll_target(145, -200, 1) == -55, "target invert=1 finger-up more -> decreases"); + CHECK(mnp_scroll_target(55, 200, 0) == -145, "target invert=0 finger-down -> decreases"); + CHECK(mnp_scroll_target(145, 200, 1) == 345, "target invert=1 finger-down -> increases"); + + /* clamp 落位:进滚动 + 拖到边界 → 钳到 [0,max_scroll] */ + CHECK(mnp_scroll_clamp(mnp_scroll_target(55, -200, 0), total, view) == 255, "clamp invert=0 up -> in range"); + CHECK(mnp_scroll_clamp(mnp_scroll_target(145, -200, 1), total, view) == 0, "clamp invert=1 up -> bottom(0)"); + CHECK(mnp_scroll_clamp(mnp_scroll_target(55, 200, 0), total, view) == 0, "clamp invert=0 down -> top(0)"); + + /* mnp_scroll_rebound:边内容差 tol=48;界内不触发,越过才触发 */ + CHECK(mnp_scroll_rebound(0, max_scroll, 48) == 0, "rebound at top(0) in-tol -> 0"); + CHECK(mnp_scroll_rebound(-47, max_scroll, 48) == 0, "rebound top overshoot 47<48 -> 0"); + CHECK(mnp_scroll_rebound(-49, max_scroll, 48) == 1, "rebound top overshoot 49>48 -> 1"); + CHECK(mnp_scroll_rebound(max_scroll, max_scroll, 48) == 0, "rebound at bottom in-tol -> 0"); + CHECK(mnp_scroll_rebound(max_scroll + 47, max_scroll, 48) == 0, "rebound bottom overshoot 47<48 -> 0"); + CHECK(mnp_scroll_rebound(max_scroll + 49, max_scroll, 48) == 1, "rebound bottom overshoot 49>48 -> 1"); + CHECK(mnp_scroll_rebound(500, max_scroll, 48) == 0, "rebound mid-range -> 0"); +} + +/* P3 开关平移动画状态机:p 推进/翻转/中断、offset 计算、裁切边界、关闭到 0 才退出。 + * 用任意 fix/ph 参数化(默认 1024/692,通知中心面板 PH=720-28=692);纯函数不依赖 fb。 */ +static void test_anim_pure(void) +{ + fprintf(stderr, "--- P3 open/close slide animation state machine ---\n"); + enum { FIX = 1024, PH = 692 }; + + /* mnp_anim_off:p→offset 线性映射(∈[-PH,0];p=0 全隐藏 / p=FIX 到位) */ + CHECK(mnp_anim_off(0, FIX, PH) == -PH, "anim_off p=0 -> -PH (fully hidden above)"); + CHECK(mnp_anim_off(FIX, FIX, PH) == 0, "anim_off p=FIX -> 0 (settled open)"); + CHECK(mnp_anim_off(FIX / 2, FIX, PH) == -(PH / 2), "anim_off mid -> -PH/2"); + + /* mnp_anim_step:打开推进(0→FIX) */ + CHECK(mnp_anim_step(0, FIX, FIX, 180, 180) == FIX, "step dt=dur -> reaches FIX in one tick"); + CHECK(mnp_anim_step(0, FIX, FIX, 90, 180) == FIX / 2, "step dt=dur/2 -> half progress"); + CHECK(mnp_anim_step(0, FIX, FIX, 10, 180) >= 1, "step small dt -> at least 1 (monotonic, no stall)"); + CHECK(mnp_anim_step(0, FIX, FIX, 0, 180) == 0, "step dt=0 -> no move"); + CHECK(mnp_anim_step(0, FIX, FIX, 100000, 180) == FIX, "step huge dt -> clamped at FIX"); + + /* 反向推进(关闭:FIX→0,线性步进率 = dt*fix/dur,非剩余比例) */ + CHECK(mnp_anim_step(FIX, 0, FIX, 90, 180) == FIX / 2, "step close dt=dur/2 -> half back"); + CHECK(mnp_anim_step(FIX / 2, 0, FIX, 45, 180) == FIX / 4, "step reversal mid -> toward 0 linearly"); + CHECK(mnp_anim_step(FIX / 4, 0, FIX, 100000, 180) == 0, "step reversal huge dt -> clamped at 0"); + + /* 打断(打开中→关闭→再打开):平滑转向,不跳变到目标 */ + int p = mnp_anim_step(0, FIX, FIX, 90, 180); /* 打开到半程 (512) */ + int p_before = p; + p = mnp_anim_step(p, 0, FIX, 30, 180); /* 打断:转为关闭,小步推进 */ + CHECK(p < p_before && p > 0, "interrupt open->close: heading to 0 (not target), mid value ok"); + int s2 = 0; + while (s2++ < 1000 && p != 0) p = mnp_anim_step(p, 0, FIX, 30, 180); + CHECK(p == 0, "interrupt close completes at 0"); + p = mnp_anim_step(p, FIX, FIX, 180, 180); /* 关闭到位后再打开 */ + CHECK(p == FIX, "reopen after interrupt -> settled open"); + + /* mnp_anim_covered_bot:裁切边界(off∈[-PH,0] → bot∈[top, top+PH]) */ + CHECK(mnp_anim_covered_bot(28, PH, -PH) == 28, "covered_bot fully hidden -> top (statusbar bottom)"); + CHECK(mnp_anim_covered_bot(28, PH, 0) == 28 + PH, "covered_bot settled -> top+PH"); + CHECK(mnp_anim_covered_bot(28, PH, -(PH / 2)) == 28 + PH / 2, "covered_bot halfway -> top+PH/2"); + CHECK(mnp_anim_covered_bot(28, PH, 0) <= 720 && mnp_anim_covered_bot(28, PH, -PH) >= 28, + "covered_bot within [28,720] — 不盖状态栏、不出屏底"); + + /* 完整关闭:多次 tick 才到 0;单调不增;且只在 p==0 才算退出 */ + p = FIX; + int steps = 0, prev = p, monotonic = 1; + while (steps++ < 100000 && p != 0) { + int np = mnp_anim_step(p, 0, FIX, 10, 180); + if (np > prev) monotonic = 0; /* 关闭方向必须单调减小 */ + if (np < 0 || np > FIX) monotonic = 0; + p = np; prev = np; + } + CHECK(p == 0, "close animation terminates at p=0 (exit condition)"); + CHECK(steps > 1, "close takes multiple ticks (smooth sliding, not a jump)"); + CHECK(monotonic, "close progress monotonic non-increasing"); + CHECK(mnp_anim_step(0, 0, FIX, 10, 180) == 0, "at p==0 with target 0 stays put (would break)"); +} + static void test_storage_contract(void) { fprintf(stderr, "--- P0 storage contract (panel reads) ---\n"); @@ -227,6 +339,8 @@ int main(void) meow_notif_set_tf_max(1024 * 1024); test_pure_logic(); + test_scroll_pure(); + test_anim_pure(); test_storage_contract(); unlink(g_tflog); rmdir(dir);