AskaEth
10690bc348
fix(ncm §31): 修两处 UI 数据竞态——返回首页行空白(staging发布) + 进第二个歌单显示上一歌单(换歌单清窗)
A. 返回首页各行 2~3s 空白:appstate_load_playlists 就地 memset(g_st.playlists[])
与 home_src2 无锁逐行绑定竞态,刷新期间 playlist_count 保留旧值 → UI 读清零行。
照搬 s_build[] staging 范式:网络落 s_pls[] → 成功后锁内原子发布(拷回+更新count),
失败保留旧快照(断网离线浏览)。绝不就地清零 UI 可见数组。
B. 进第二个歌单显示上一歌单:playlist_open/refresh 同步路径不调 appstate_playlist_reset,
pl_apply(1) 绑到上一歌单残留窗口(track_ids_count/songs)。
新增窗口归属(歌单 id 唯一标识, 对搜索歌单同样成立): worker 首屏发布后
appstate_playlist_window_set;refresh 目标≠归属(窗口is) → 同步 reset 再 pl_apply。
同歌单手动刷新(id 同)保留旧内容(stale-while-revalidate)。
宿主回归:playlist_race_sim(新 F 并发读无清零态/G 开A→开B 不串)、window/search/
cache_evict/player_flow/stream_sim、test_ncm_core 宿主+mipsel 全 PASS;
build_ncm.sh -Wall -Wextra 0 warning;0 真实请求;未部署。
2026-09-02 03:03:48 +08:00
..
2026-09-01 01:17:21 +08:00
2026-08-31 06:03:36 +08:00
2026-08-31 06:03:36 +08:00
2026-08-31 06:03:36 +08:00
2026-08-31 06:03:36 +08:00
2026-09-01 21:06:57 +08:00
2026-09-01 05:29:09 +08:00
2026-09-02 02:41:09 +08:00
2026-08-31 12:50:32 +08:00
2026-08-31 12:50:32 +08:00
2026-08-31 09:00:23 +08:00
2026-08-31 09:00:23 +08:00
2026-08-31 09:00:23 +08:00
2026-08-31 09:00:23 +08:00
2026-08-31 09:00:23 +08:00
2026-08-31 09:00:23 +08:00
2026-08-31 15:42:24 +08:00
2026-09-01 04:03:01 +08:00
2026-09-02 03:03:48 +08:00
2026-09-02 03:03:48 +08:00
2026-08-31 17:40:04 +08:00
2026-08-31 17:40:04 +08:00
2026-08-31 17:40:04 +08:00
2026-09-01 19:21:16 +08:00
2026-09-01 20:00:14 +08:00
2026-09-01 14:44:55 +08:00
2026-08-31 12:50:32 +08:00
2026-08-31 12:50:32 +08:00
2026-09-01 04:03:01 +08:00