From b5da7d71519fa7af9fc4d4704dee68fd9cf55349 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Thu, 3 Sep 2026 14:27:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(launcher):=20M6.24=20App=E5=86=85=E6=8C=89?= =?UTF-8?q?=E7=94=B5=E6=BA=90=E9=94=AE=E9=94=81=E5=B1=8F=E6=97=B6=E5=BA=8F?= =?UTF-8?q?(=E6=9D=BE=E5=BC=80=E8=BE=B9=E6=B2=BF=E8=AF=AF=E5=88=A4?= =?UTF-8?q?=E5=94=A4=E9=86=92)=20=E2=80=94=20=E6=8E=A8=E5=8D=A1=E9=AA=8C?= =?UTF-8?q?=E6=94=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- patch_v2/meow_launcherd/app_launcher.c | 41 ++++++++++++++++---------- scripts/build/fw_content.conf | 2 +- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/patch_v2/meow_launcherd/app_launcher.c b/patch_v2/meow_launcherd/app_launcher.c index f4a9527..0d5542b 100644 --- a/patch_v2/meow_launcherd/app_launcher.c +++ b/patch_v2/meow_launcherd/app_launcher.c @@ -2004,22 +2004,33 @@ static int launch_app_chain(struct app *a, const char *chain) memcpy(save_pow, kp_power.cur, sizeof save_pow); memcpy(save_keys, kp_keys.cur, sizeof save_keys); app_last_input = now_ms(); + /* M6.24 bug:App 前台单按电源息屏后,同一次按压的**松开**边沿被误判为唤醒—— + * watchdog 在松开边沿执行 wd_panel_off(背光 0),下一圈本循环 read_brightness() + * ==0 置 app_panel_manual_off=1,而 save_* 基线仍是「按下」态,于是这次「松开」 + * 被 key_edge 捕获,再命中 manual_off → meow_panel_on + 锁屏 overlay → 用户看到 + * 「黑一下又自动亮 PIN;再按才真正熄屏」。修法=唤醒必须来自**新的按压**:要求 + * 当前确有键按下(cur 任一 bit),松散开边沿(无键按住)不唤醒。 */ if (meow_auto_slept || app_panel_manual_off) { - logmsg("screen-off (app): key wake (auto=%d manual=%d)", - meow_auto_slept, app_panel_manual_off); - meow_panel_on(); - meow_auto_slept = 0; - app_panel_manual_off = 0; - fb_pan_buf0_force(); - /* M2.x 锁屏:App 前台唤醒后若需锁屏 → SIGSTOP 叠加锁屏页;解锁/SIGCONT 回应用。 - * §310:叠加期 App 崩溃(LR==LCK_OVERLAY_RET_DIED)→ 回收僵尸走统一退出路径 - * (launcher 不崩、run_menu 重绘主屏),同 run_app_notif_overlay 的 died 分支。 */ - if (lck_wake_should_lock()) { - int lr2 = run_app_lock_overlay(a, pid); - if (lr2 != 0) { - reap_wait(pid, &status); - ams_status_valid = 1; - break; + int any_down = 0; + for (int w = 0; w < KEYBUF_WORDS; w++) + if (kp_power.cur[w] || kp_keys.cur[w]) { any_down = 1; break; } + if (any_down) { + logmsg("screen-off (app): key wake (auto=%d manual=%d)", + meow_auto_slept, app_panel_manual_off); + meow_panel_on(); + meow_auto_slept = 0; + app_panel_manual_off = 0; + fb_pan_buf0_force(); + /* M2.x 锁屏:App 前台唤醒后若需锁屏 → SIGSTOP 叠加锁屏页;解锁/SIGCONT 回应用。 + * §310:叠加期 App 崩溃(LR==LCK_OVERLAY_RET_DIED)→ 回收僵尸走统一退出路径 + * (launcher 不崩、run_menu 重绘主屏),同 run_app_notif_overlay 的 died 分支。 */ + if (lck_wake_should_lock()) { + int lr2 = run_app_lock_overlay(a, pid); + if (lr2 != 0) { + reap_wait(pid, &status); + ams_status_valid = 1; + break; + } } } } diff --git a/scripts/build/fw_content.conf b/scripts/build/fw_content.conf index d161013..8914373 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|dd9e619df3e0ab7544850133ac6db7df|M6.22 播放页返回根因修复(np_exit 退出外层主循环) +patch_v2/meow_launcherd/meow_launcherd|/usr/bin/meow_launcherd|932bc985be34c89aadc6875e55cc9bae|M6.24 App内电源键锁屏时序(释放边沿误判唤醒) patch_v2/meow_watchdog/meow_watchdog|/usr/bin/meow_watchdog|34ddbf0275526eaf9be988134845c3af|应用看门狗 M6.23(亮屏亮度按用户设置 display.brightness 恢复,修 panel ON 固定60跳变) 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)