From 76eb2f4d1cab86063b5f48e9ed837140b7e96964 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Thu, 3 Sep 2026 14:40:56 +0800 Subject: [PATCH] =?UTF-8?q?fix(bootmenu):=20M6.25=20=E5=BC=80=E6=9C=BA?= =?UTF-8?q?=E8=8F=9C=E5=8D=95/=E7=AC=AC=E4=BA=8C=E5=B1=8F=E4=BA=AE?= =?UTF-8?q?=E5=BA=A6=E6=8C=89=E7=94=A8=E6=88=B7=E8=AE=BE=E7=BD=AE=E6=81=A2?= =?UTF-8?q?=E5=A4=8D(=E6=96=B9=E6=A1=88A:=E6=98=BE=E7=A4=BA=E5=89=8D?= =?UTF-8?q?=E8=AF=BBsettings.conf=E5=86=99=E5=9B=9E)=20=E2=80=94=20?= =?UTF-8?q?=E6=8E=A8=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- patch_v2/bootmenu/meow_bootmenu.c | 39 +++++++++++++++++++++++++++++++ scripts/build/fw_content.conf | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/patch_v2/bootmenu/meow_bootmenu.c b/patch_v2/bootmenu/meow_bootmenu.c index 191b092..71cab57 100644 --- a/patch_v2/bootmenu/meow_bootmenu.c +++ b/patch_v2/bootmenu/meow_bootmenu.c @@ -104,6 +104,7 @@ #define PLAYER_BIN "/usr/bin/hiby_player" #define PLAYER_LOG "/usr/data/meow_player.log" #define LAUNCHER_BIN "/usr/bin/meow_launcherd" /* MeowOS 基础主屏(M2 接管) */ +#define MEOW_SETTINGS_FILE "/usr/data/meow/settings.conf" /* 板载用户设置(display.brightness,与 launcher/watchdog 同源) */ /* ---- 面板/背光(与 meow_launcherd 相同路径,§18.21/§红线)---- */ #ifndef FBIOBLANK @@ -844,6 +845,37 @@ static void write_brightness(int val) close(fd); } +/* M6.25:开机选单亮度以**用户设置**为准(/usr/data/meow/settings.conf 的 display.brightness)。 + * 根因:选单显示路径从不写背光,开机菜单/第二屏亮度纯继承引导早期面板高值;M2.83 起 launcher + * 「开机选单期不抢屏」怠速,移除了 launcher 提前写用户亮度那一步 → 菜单亮在引导高值上。 + * 与 meow_watchdog wd_settings_brightness() 同源解析(同文件、同 clamp:下限 display.brightness_min + * 默认 1=极暗但可见、上限 100=防闪屏),自包含零依赖,不链 launcher meow_settings。返回 clamped + * 值;settings 文件不可读 → 返回 -1,调用方**不动**(退化为现状,保安全——选单阶段只写 brightness、 + * 绝不碰 FBIOBLANK/blank,§18.24 纪律)。 */ +static int bootmenu_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; +} + /* 面板 unblank(FBIOBLANK 0)。仅用于杀播放器后把屏点亮,以便 MeowOS 接管; * 播放器已死,故不涉及「播放器 state machine」一致性(§18.11 关注点)。 * bootmenu 选单/自检阶段绝不调用本函数(§18.24 纪律:不碰 panel blank)。 */ @@ -1704,6 +1736,13 @@ int main(int argc, char **argv) return 0; } + /* M6.25(方案A):选单显示前把背光按用户设置恢复(display.brightness,clamp [min||1,100])。 + * settings 不可读/值非法 → 不动(退化为现状)。只在显示前写一次,不碰 FBIOBLANK/blank(§18.24)。 */ + { + int b = bootmenu_settings_brightness(); + if (b > 0) write_brightness(b); + } + if (fb_open() != 0) return 1; fb_snapshot_player(); /* 快照当前显示缓冲(恢复播放器帧用) */ fb_pan_buf0(); /* 画前 pan 到 yoffset=0(buffer0) */ diff --git a/scripts/build/fw_content.conf b/scripts/build/fw_content.conf index 8914373..edd7417 100644 --- a/scripts/build/fw_content.conf +++ b/scripts/build/fw_content.conf @@ -27,7 +27,7 @@ # ============================================================================ # ---- 用户态/服务守护二进制(usr/bin,全部 chmod 755 静态 MIPS)---- -patch_v2/bootmenu/meow_bootmenu|/usr/bin/meow_bootmenu|4441822d87e76bfce2ce584604ac3830|引导选单 M2.85(sysui让位 agent-216) +patch_v2/bootmenu/meow_bootmenu|/usr/bin/meow_bootmenu|8de51144538d698c3ff82ee6651b8b1a|引导选单 M6.25(开机菜单/第二屏亮度按用户设置恢复:显示前读 settings.conf 写回,方案A) 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)