fix(sdk+launcher): 图标不渲染真根因(agent-219) — meow_ui_img.c scale_buf cover 采样把乘写成除(÷缩放比→采到源图左上角透明区,全丢); 改乘+居中裁剪偏移修正; 宿主旧测试用纯色图掩盖了该bug。+ main_menu App退出/结构变化重绘时 fb_pan_buf0_force 无条件pan回buffer0(防App翻页留buffer1致菜单残帧)
meow_ui.a→3e0ee8f7 launcher→9d0efc2f hello→9609ea6e files→90f5cf07 ncm→be8be221(均已上卡); 真机截图证据 .tmp/meowbug/fix1.png+fix_b2_after.png
This commit is contained in:
1 parent
05a19a9ea3
commit
ab4da09e75
45 files changed
+1926
-147
No files matched your search
@@ -222,6 +222,36 @@ static void test_network(void) {
|
||||
if (!net_ok) printf(" SKIP network live checks (host unreachable or TLS CA missing)\n");
|
||||
}
|
||||
|
||||
/* ---------- 二期:/api/playlist/track/all 服务端分页 离线解析 ---------- */
|
||||
static void test_track_all_parse(void) {
|
||||
printf("== track_all 离线解析(二期)==\n");
|
||||
/* 合成一个真实形态的 track/all 响应:songs[](全 song 对象,含 al.picUrl)+ total。
|
||||
* id 为 >2^31 数字,验证 int64 不溢出;al.picUrl 验证专辑封面字段。 */
|
||||
const char *json =
|
||||
"{\"code\":200,\"songs\":["
|
||||
"{\"id\":2746301825,\"name\":\"Chrono Rewind\",\"dt\":253000,\"fee\":1,"
|
||||
" \"ar\":[{\"name\":\"CVRCH\"}],"
|
||||
" \"al\":{\"name\":\"Rewrite\",\"picUrl\":\"http://p1.music.126.net/ab/cover1.jpg\"}},"
|
||||
"{\"id\":2048962657,\"name\":\"Verve\",\"dt\":210000,\"fee\":0,"
|
||||
" \"ar\":[{\"name\":\"Ryan Taubert\"}],"
|
||||
" \"al\":{\"name\":\"Rebuild\",\"picUrl\":\"https://p2.music.126.net/cd/cover2.jpg\"}}"
|
||||
"],\"total\":5191}";
|
||||
ncm_song_t songs[8];
|
||||
int n = 0;
|
||||
int64_t total = 0;
|
||||
int rc = ncm_api_parse_track_all(json, strlen(json), songs, 8, &n, &total);
|
||||
CHECKRC(rc, "parse_track_all rc");
|
||||
CHECK(n == 2, "parsed 2 songs (n=%d)", n);
|
||||
CHECK(total == 5191, "total=%lld", (long long)total);
|
||||
CHECK(strcmp(songs[0].name, "Chrono Rewind") == 0, "song0 name");
|
||||
CHECK(strcmp(songs[0].art_name, "CVRCH") == 0, "song0 artist");
|
||||
CHECK(strcmp(songs[0].album_name, "Rewrite") == 0, "song0 album");
|
||||
CHECK(strcmp(songs[0].al_pic, "http://p1.music.126.net/ab/cover1.jpg") == 0, "song0 al_pic");
|
||||
CHECK(strcmp(songs[1].id, "2048962657") == 0, "song1 id(numeric->text)");
|
||||
CHECK(strcmp(songs[1].al_pic, "https://p2.music.126.net/cd/cover2.jpg") == 0, "song1 al_pic");
|
||||
CHECK(songs[0].duration_ms == 253000 && songs[0].fee == 1, "song0 dt/fee");
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
const char *data_dir = (argc > 1) ? argv[1] : "/tmp/ncm_test";
|
||||
printf("ncm_core self-test, data_dir=%s\n", data_dir);
|
||||
@@ -236,6 +266,7 @@ int main(int argc, char **argv) {
|
||||
test_cache();
|
||||
test_qr();
|
||||
test_network();
|
||||
test_track_all_parse();
|
||||
|
||||
printf("\n%s\n", g_fail ? "== RESULT: FAIL ==" : "== RESULT: PASS ==");
|
||||
return g_fail ? 1 : 0;
|
||||
|
||||
Binary file not shown.
Reference in new issue
Block a user