fix(ncm §32): 内存瘦身修 OOM 被杀 —— 封面降采样(8.28MB→0.78MB) + 瞬态 rbuf 缩减 + 线程栈显式
真机 dmesg 实锤:OOM Kill ncm (score 460, anon-rss 26.9MB, 设备 56MB)。 画像:封面全分辨率 RGBA 8.28MB(1448x1448 原生解码驻留) 是最大可控块。 瘦身(按收益排序): 1. sdk meow_ui_img 新增纯增量 meow_img_downscale + cover.c cover_cap(≤480px) → 封面 8.28MB→0.78MB,-7.65MB(mem_sim 实测 PASS)。 2. ncm_api.c 瞬态响应 rbuf:song_url→64KB、lyric/song_detail/cloudsearch/user_playlist→256KB (detail/track_all 保 1MB)。 3. ncm_app_internal.h 新增 ncm_thread_create(显式 128KB 栈),替换全部 14 处 pthread_create。 4. 滑动窗口/meta 复核零回退(window_sim:608B/首,6000 首 280KB 恒定)。 验证:mem_sim 封面收益 PASS + host home/player 渲染 OK + stream_sim/player_flow_sim/ window_sim/search_sim/cache_evict_sim 全 PASS + test_ncm_core host+mipsel(qemu) PASS + build_ncm.sh -Wall -Wextra 0 warning。真机 scp 播放在跑确认(缓存曲,0 播放请求)。 新 ncm md5 44fa16fe(text 1015150/bss 1362500)。正式部署留主会话。
This commit is contained in:
1 parent
202caaf66b
commit
68ce46a5d8
19 files changed
+368
-19
No files matched your search
@@ -211,7 +211,7 @@ static void sr_maybe_load_more(void)
|
||||
g_req_tab = g_tab; g_req_offset = n; g_req_replace = 0;
|
||||
/* 单飞:无 worker 才发(search_worker 尾部解锁) */
|
||||
g_thr_on = 1; g_loading = 1; g_more_err = 0;
|
||||
if (pthread_create(&g_thr, NULL, search_worker, NULL) != 0) {
|
||||
if (ncm_thread_create(&g_thr, search_worker, NULL) != 0) {
|
||||
g_thr_on = 0; g_loading = 0; g_more_err = 1;
|
||||
}
|
||||
}
|
||||
@@ -270,7 +270,7 @@ void search_submit(const char *kw)
|
||||
g_st.search_err = 0;
|
||||
g_loading = 1; g_more_err = 0;
|
||||
g_thr_on = 1;
|
||||
if (pthread_create(&g_thr, NULL, search_worker, NULL) != 0) {
|
||||
if (ncm_thread_create(&g_thr, search_worker, NULL) != 0) {
|
||||
g_thr_on = 0; g_loading = 0; g_st.search_err = NCM_ERR_IO;
|
||||
}
|
||||
sr_apply();
|
||||
@@ -290,7 +290,7 @@ static void sr_set_tab(int t)
|
||||
g_req_tab = g_tab; g_req_offset = 0; g_req_replace = 1;
|
||||
g_loading = 1; g_more_err = 0;
|
||||
g_thr_on = 1;
|
||||
if (pthread_create(&g_thr, NULL, search_worker, NULL) != 0) {
|
||||
if (ncm_thread_create(&g_thr, search_worker, NULL) != 0) {
|
||||
g_thr_on = 0; g_loading = 0;
|
||||
}
|
||||
}
|
||||
@@ -354,7 +354,7 @@ int search_on_tap(int x, int y)
|
||||
g_req_tab = g_tab; g_req_offset = 0; g_req_replace = 1;
|
||||
g_loading = 1;
|
||||
g_thr_on = 1;
|
||||
if (pthread_create(&g_thr, NULL, search_worker, NULL) != 0) {
|
||||
if (ncm_thread_create(&g_thr, search_worker, NULL) != 0) {
|
||||
g_thr_on = 0; g_loading = 0; g_st.search_err = NCM_ERR_IO;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user