From cd9d9da3bdcf52dba061d33aa31784cbd3b20465 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Thu, 3 Sep 2026 13:42:32 +0800 Subject: [PATCH] =?UTF-8?q?fix(launcher):=20M6.20=20=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E9=A1=B5=E5=8F=B3=E6=BB=91=E8=BF=94=E5=9B=9E+=E9=A1=B6?= =?UTF-8?q?=E9=83=A8=E4=B8=8B=E6=BB=91=E9=80=9A=E7=9F=A5=E4=B8=AD=E5=BF=83?= =?UTF-8?q?+=E6=97=B6=E9=92=9F1s=E5=88=B7=E6=96=B0=20=E2=80=94=20=E6=8E=A8?= =?UTF-8?q?=E5=8D=A1=E9=AA=8C=E6=94=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- patch_v2/meow_launcherd/main_menu.c | 2 +- .../meow_launcherd/meow_launcher_internal.h | 2 +- patch_v2/meow_launcherd/now_playing.c | 31 +++++++++++++++++-- scripts/build/fw_content.conf | 2 +- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/patch_v2/meow_launcherd/main_menu.c b/patch_v2/meow_launcherd/main_menu.c index 9aabafe..8c6712a 100644 --- a/patch_v2/meow_launcherd/main_menu.c +++ b/patch_v2/meow_launcherd/main_menu.c @@ -1792,7 +1792,7 @@ static void run_menu(struct app apps[MAX_APPS], int napps, int state, tx >= MEOW_EDGE_W && ty >= SB_BAR_H) { logmsg("menu: left-swipe -> Now Playing (dx=%d,dy=%d)", dx, dy); menu_arm_touch(TAP_ARM_DELAY_MS); - run_now_playing(); + run_now_playing(apps, napps); /* 重播按键防抖基线,防播放页内电源/音量边沿被 run_menu 误判 */ memset(&kd_pwr, 0, sizeof kd_pwr); memset(&kd_vold, 0, sizeof kd_vold); diff --git a/patch_v2/meow_launcherd/meow_launcher_internal.h b/patch_v2/meow_launcherd/meow_launcher_internal.h index a448545..656332f 100644 --- a/patch_v2/meow_launcherd/meow_launcher_internal.h +++ b/patch_v2/meow_launcherd/meow_launcher_internal.h @@ -780,7 +780,7 @@ uint16_t rgb565(uint32_t c); void run_notif_center(struct app *apps, int napps, notif_click_t *click, int live_open, int lox, int loy); /* 阶段D附录B:Now Playing 大页(主界面横划进入;左缘右滑返回;阻塞到返回)。 */ -void run_now_playing(void); +void run_now_playing(struct app *apps, int napps); void run_settings_page(void); void s_about_open(void); int s_dd_modal(const char *title, const char *item[S_NET_MAX], int n, int cur); diff --git a/patch_v2/meow_launcherd/now_playing.c b/patch_v2/meow_launcherd/now_playing.c index 4cc9086..30c908c 100644 --- a/patch_v2/meow_launcherd/now_playing.c +++ b/patch_v2/meow_launcherd/now_playing.c @@ -269,7 +269,7 @@ static int64_t np_progress_seek(int tx, int ty) return 0; } -void run_now_playing(void) +void run_now_playing(struct app *apps, int napps) { int tfd = open(DEV_TOUCH, O_RDONLY | O_NONBLOCK); if (tfd >= 0) { unsigned char ev[16]; while (read(tfd, ev, sizeof ev) == 16) {} } @@ -291,6 +291,7 @@ void run_now_playing(void) int td = 0, td_ok = 0, tdx = -1, tdy = -1, tlx = -1, tly = -1; unsigned long long last_prog = now_ms(); + unsigned long long np_last_status_tick = now_ms(); /* M6.20:播放页状态栏时钟 1s 刷新(主界面同语义) */ int need_redraw = 1; char last_title[128] = ""; uint32_t last_state = 0xFFFFFFFFu; @@ -327,8 +328,26 @@ void run_now_playing(void) 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)) break; + /* 顶部热区下滑 → 打开通知中心(与主界面同语义;mnp_top_swipe_down + * 内部已排除左缘 down_x<24,与下方返回手势互斥)。run_notif_center + * 为阻塞模态,返回后整页重画播放页。 */ + if (mnp_top_swipe_down(tdx, tdy, dx, dy, SB_BAR_H, 65)) { + notif_click_t click; + memset(&click, 0, sizeof click); + click.app_idx = -1; + click.status = NOTIF_CLICK_STATUS_NONE; + run_notif_center(apps, napps, &click, 0, 0, 0); + need_redraw = 1; + meow_dirty_full(); + meow_ui_flush(); + } + /* 左缘右滑返回(全局手势语义),或任意横向右滑返回——与主界面 + * 「左滑进入 Now Playing」对称(main_menu 左滑仅要求 tx>=MEOW_EDGE_W, + * 返回却需精确落 24px 左缘带,用户反向右滑极易落空 → 滑不出来)。 + * 播放页无横向分页内容、无进度条拖动(进度=点按,幅度<60 走 tap 分支), + * 故任意位置横向右滑恒判返回,安全。回到主界面(不清理媒体会话) */ + else if (meow_edge_back(tdx, dx, dy) || + (dx >= MEOW_EDGE_SWIPE && adx > ady)) break; if (adx < 60 && ady < 60) { int cmd = np_btn_tap(tlx, tly); if (cmd) { meow_media_playctl((uint32_t)cmd, 0); need_redraw = 1; } @@ -407,6 +426,12 @@ void run_now_playing(void) last_prog = now; np_repaint_progress(); } + /* M6.20:播放页状态栏时钟 1s 刷新(与主界面/子页同语义;draw_clock 喂 SDK 全局 + * 状态栏 + 标脏顶条,SDK present() 重绘——否则时间冻结在进入播放页那一刻)。 */ + if (now - np_last_status_tick >= 1000) { + np_last_status_tick = now; + draw_clock(); + } usleep(10000); } meow_ui_activity_pop(); /* M7.0b:退出 Now Playing,回主 activity(控件 owner 仍钉哨兵,复用) */ diff --git a/scripts/build/fw_content.conf b/scripts/build/fw_content.conf index 7a0ead8..a94e238 100644 --- a/scripts/build/fw_content.conf +++ b/scripts/build/fw_content.conf @@ -28,7 +28,7 @@ # ---- 用户态/服务守护二进制(usr/bin,全部 chmod 755 静态 MIPS)---- patch_v2/bootmenu/meow_bootmenu|/usr/bin/meow_bootmenu|4441822d87e76bfce2ce584604ac3830|引导选单 M2.85(sysui让位 agent-216) -patch_v2/meow_launcherd/meow_launcherd|/usr/bin/meow_launcherd|5f01ecdcbe1b3a32ca4d907f05e2dbb7|主屏 launcher M6.19: agent-373 五修复收编(keys.c 亮度恢复修 PIN 亮屏亮度跳 fix④),重链新SDK 51caee4a(含 meow_ui_gfx 恢复边沿整帧重画 fix①②③ ncm 后台化叠层/穿透) +patch_v2/meow_launcherd/meow_launcherd|/usr/bin/meow_launcherd|7c013546cf653d74860118da943c19d0|M6.20 播放页右滑返回/顶部下滑通知中心/时钟1s刷新 patch_v2/meow_watchdog/meow_watchdog|/usr/bin/meow_watchdog|553840cdc79d8d7bed766a5e3981ac57|应用看门狗 M2.97(音量反转 + DS1039 平方锥度 + 插孔消抖) patch_v2/meow_svcd/meow_svcd|/usr/bin/meow_svcd|605646c4cc93f2baf29071ea6bc870ea|服务管理器 M2.77(+崩溃上报 meow_crash agent-187) mips-repo/bins/meow_mdns/bin/meow_mdns|/usr/bin/meow_mdns|d6b0151bda26768f19952dae1342610d|mDNS 应答器 M2.78(启动竞态+换IP重检 agent-194)