fix(launcher): 图标区空白——menu_draw_icon 垫块+首字母先画、图片叠加(icon透明/解码失败时占位仍可见); 补 sys_mem_available_kb 实现(解锁OOM护栏编译) (agent-218)

launcher 333d6f53→9902f19c; 宿主test_host_icon PASS
This commit is contained in:
MeowOS committed 2026-08-31 14:34:28 +08:00
1 parent 228e9e79e0
commit e8deed88bd
7 files changed
+193 -2

No files matched your search

+10
View File
@@ -1301,6 +1301,16 @@ static int launch_app_chain(struct app *a, const char *chain)
* 1=大字库GBK,2=Full。SDK meow_ui_gfx 读入存档并按档装载(见
* meow_font_effective_paths_tiered;真正装载由 meow_font_reload_tier 实现)。 */
int eff_tier = meow_font_effective_tier(a->fonts);
/* M2.85 内存护栏:大字库(gbk 驻留 ~17MB)在低内存时会连 App 一起被 OOM 杀
* (真机实测 ncm anon-rss 22MB 被 oom_kill)。MemAvailable 低于阈值 → 强制降 common,
* App 大字库需求让位于「能跑起来」(215 建议策略,launcher 层首选落点)。 */
if (eff_tier > MEOW_FONT_TIER_COMMON) {
long av = sys_mem_available_kb();
if (av >= 0 && av < 24 * 1024) {
logmsg("launch: MemAvailable=%ldKB < 24MB, font tier %d -> common (OOM guard)", av, eff_tier);
eff_tier = MEOW_FONT_TIER_COMMON;
}
}
snprintf(env_tier, sizeof env_tier, "MEOW_FONT_TIER=%d", eff_tier);
envp[ne++] = env_tier;
have_global = (meow_font_effective_paths_tiered(eff_tier, fpng, sizeof fpng,