fix(bootmenu): M6.25 开机菜单/第二屏亮度按用户设置恢复(方案A:显示前读settings.conf写回) — 推卡
This commit is contained in:
1 parent
42718385cc
commit
76eb2f4d1c
2 files changed
+40
-1
No files matched your search
@@ -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) */
|
||||
|
||||
Reference in new issue
Block a user