fix(§10.5): 通知中心叠加媒体保活——播放中 App 不 SIGSTOP(修播放中滑通知中心音乐停)
- launcher: run_app_notif_overlay 入口 meow_media_app_playing() 判定(当前源+PLAYING+app_id 匹配) → 不 SIGSTOP/不 SIGCONT,App 续跑保 PCM;非播放中维持 SIGSTOP 模板;关闭时 unlink 标记挪到 恢复帧上屏后(防未冻结 App 抢 present 一帧回闪)。 - SDK gfx: present() 见 /tmp/meow_notif_active(env MEOW_NOTIF_ACTIVE_FILE 覆写)自抑上屏, 仅 App 进程(系统 UI/launcher 不抑制),200ms 节流 stat,脏区累积解除后一次上屏; meow_gfx_overlay_suppressed_count 供单测断言。 - SDK input: 叠加期排空丢弃本进程 evdev 副本 + EVIOCGKEY 位图静默对齐(防面板点击被 App 双重消费/解除后边沿误判),进入沿复位触摸状态机。 - 宿主:新 test_overlay_suppress T1-T4 + test_media §8(8 用例)全 PASS;test_notif_*/ test_sdk_*/test_vol_ramp_jack 等回归全过;zig-mipsel -Wall -Wextra 全 TU 0 warning。 - meow_launcherd fbb82036(/usr/bin 只读待固件,fw_content.conf 已更)/ meow_ui.a d6242fc2 / hello a073535a / files 2b799d07(已热更到卡);ncm 未重链(ncm_app 他 agent 在改)。
This commit is contained in:
1 parent
820d1e52bf
commit
ad9778476a
19 files changed
+254
-13
No files matched your search
@@ -7,6 +7,7 @@
|
||||
* 4) PLAYCTL 下发字节格式(socketpair 对端可读回 MSG_PLAYCTL 帧,cmd/seek 正确);
|
||||
* 5) meow_media_playctl 无源 → -1;
|
||||
* 6) clear(app) 清会话 → current()=NULL。
|
||||
* 8) meow_media_app_playing(§10.5 叠加保活分支:当前源+PLAYING+app_id 匹配才 1)。
|
||||
* 只依赖 meow_media.c + meow_ipc.h(纯 C),宿主 gcc 直编。
|
||||
*/
|
||||
#include <stdio.h>
|
||||
@@ -170,6 +171,26 @@ int main(void)
|
||||
fill_meta(&m, "", MEOW_MEDIA_PLAYING, 0, 0, "x", "y");
|
||||
CHECK(meow_media_meta(&m, sv[0]) == -1, "meta empty app_id == -1");
|
||||
|
||||
/* 8) §10.5 叠加保活分支判定 meow_media_app_playing(launcher 不 SIGSTOP 的入口判据) */
|
||||
meow_media_clear(NULL);
|
||||
CHECK(meow_media_app_playing("com.ncm") == 0, "app_playing: no source == 0");
|
||||
fill_meta(&m, "com.ncm", MEOW_MEDIA_PLAYING, 1000, 240000, "Song A", "Artist A");
|
||||
meow_media_meta(&m, sv[0]);
|
||||
CHECK(meow_media_app_playing("com.ncm") == 1, "app_playing: current+PLAYING+match == 1");
|
||||
CHECK(meow_media_app_playing("com.other") == 0, "app_playing: app_id mismatch == 0");
|
||||
CHECK(meow_media_app_playing("") == 0, "app_playing: empty app_id == 0");
|
||||
CHECK(meow_media_app_playing(NULL) == 0, "app_playing: NULL app_id == 0");
|
||||
fill_meta(&m, "com.ncm", MEOW_MEDIA_PAUSED, 1000, 240000, "Song A", "Artist A");
|
||||
meow_media_meta(&m, sv[0]);
|
||||
CHECK(meow_media_app_playing("com.ncm") == 0, "app_playing: PAUSED == 0 (SIGSTOP as usual)");
|
||||
fill_meta(&m, "com.ncm", MEOW_MEDIA_PLAYING, 2000, 240000, "Song A", "Artist A");
|
||||
meow_media_meta(&m, sv[0]);
|
||||
/* 当前源被别的 App 抢走(后者 PAUSED 也抢走「最近活跃」)→ 本 App 播放中也不再保活 */
|
||||
fill_meta(&m, "com.player2", MEOW_MEDIA_PAUSED, 0, 180000, "Song B", "Artist B");
|
||||
meow_media_meta(&m, sv[0]);
|
||||
CHECK(meow_media_app_playing("com.ncm") == 0, "app_playing: not current source == 0");
|
||||
meow_media_clear(NULL);
|
||||
|
||||
printf("\n%s (%d fails)\n", g_fails ? "FAILED" : "ALL PASS", g_fails);
|
||||
return g_fails ? 1 : 0;
|
||||
}
|
||||
Reference in new issue
Block a user