diff --git a/patch_v2/meow_watchdog/meow_watchdog.c b/patch_v2/meow_watchdog/meow_watchdog.c index 44663b5..aca36eb 100644 --- a/patch_v2/meow_watchdog/meow_watchdog.c +++ b/patch_v2/meow_watchdog/meow_watchdog.c @@ -214,6 +214,39 @@ static void write_brightness(int val) close(fd); } +/* M6.23:亮屏恢复亮度以**用户设置**为准(/usr/data/meow/settings.conf 的 display.brightness), + * 而非 wd_saved_bri 快照——该快照可能被污染:panel OFF 前 read_brightness() 可能读到 launcher + * 先写好的 0(launcher meow_panel_off 已 write_brightness(0)),`wd_saved_bri=(br>0)?br:60` 便落到 + * 默认 60;panel ON 恢复 60 与 launcher 按用户设置恢复 7 竞态 → 亮屏亮度跳变(真机「跳高到 60 / + * 又降回 7」,2026-09-03)。 + * 与 launcher meow_settings_brightness_clamped() 同源(同文件、同 clamp:下限 display.brightness_min + * 默认 1=极暗但可见、上限 100=防闪屏);本进程自身 wd_vol_load 早已读该文件,不引入 launcher 全量 + * 依赖,保持 watchdog 独立性。返回 clamped 值;settings 文件不可读(S70 早启动 /usr/data 未就绪) + * → 返回 -1,调用方回退 wd_saved_bri(保持旧行为,防开机竞态)。 */ +static int wd_settings_brightness(void) +{ + FILE *f = fopen(MEOW_SETTINGS_FILE, "r"); + if (!f) return -1; + int b = 101; /* display.brightness 默认(与 launcher 设置表同值,键缺失时 clamp→100) */ + int mn = 1; /* display.brightness_min 默认(极暗但可见;键缺失时保底) */ + char buf[128]; + while (fgets(buf, sizeof buf, f)) { + char *eq = strchr(buf, '='); + if (!eq) continue; + *eq = 0; + char *k = buf; int kl = (int)strlen(k); + while (kl > 0 && (k[kl-1] == ' ' || k[kl-1] == '\t')) k[--kl] = 0; + char *v = eq + 1; while (*v == ' ' || *v == '\t') v++; + int iv = atoi(v); + if (!strcmp(k, "display.brightness_min")) { if (iv >= 1 && iv <= 100) mn = iv; } + else if (!strcmp(k, "display.brightness")) { b = iv; } + } + fclose(f); + if (b < mn) b = mn; + if (b > 100) b = 100; + return b; +} + /* 强制 re-pan 到 buffer0:FBIOBLANK(4)->(0) 后 LCDC 扫描地址可能已复位到非 buffer0/失效 * 位置(launcher M2.8 Bug-3-residual 根因),而应用始终画 buffer0,必须无条件把显示翻回 * buffer0,否则唤醒后黑屏/旧帧。 */ @@ -240,9 +273,14 @@ static void wd_panel_off(void) static void wd_panel_on(void) { if (wd_fbfd >= 0) ioctl(wd_fbfd, FBIOBLANK, 0); - write_brightness(wd_saved_bri > 0 ? wd_saved_bri : 60); + /* M6.23:恢复亮度以**用户设置**为准(wd_settings_brightness),settings 不可用时才回退 + * wd_saved_bri 快照(再退默认 60)——与 launcher meow_panel_on 同语义,杜绝「亮屏恢复 60 + * 与 launcher 恢复 7 竞态 → 跳变」。 */ + int b = wd_settings_brightness(); + int restore = (b > 0) ? b : (wd_saved_bri > 0 ? wd_saved_bri : 60); + write_brightness(restore); wd_pan_buf0_force(); /* 唤醒后强制回 buffer0 */ - wd_log("power: panel ON (blank 0 + brightness %d)", wd_saved_bri); + wd_log("power: panel ON (blank 0 + brightness %d, user=%d saved=%d)", restore, b, wd_saved_bri); } /* launcher 正在画电源菜单(/tmp/meow_power_menu_active 存在)→ watchdog 完全让位。 */ diff --git a/scripts/build/fw_content.conf b/scripts/build/fw_content.conf index 0fdaad1..d161013 100644 --- a/scripts/build/fw_content.conf +++ b/scripts/build/fw_content.conf @@ -29,7 +29,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_watchdog/meow_watchdog|/usr/bin/meow_watchdog|553840cdc79d8d7bed766a5e3981ac57|应用看门狗 M2.97(音量反转 + DS1039 平方锥度 + 插孔消抖) +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) patch_v2/meow_sysui/meow_sysui|/usr/bin/meow_sysui|173013cc8f0899b3001d0b894ac0d9e6|系统 UI(sysui)