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
+53
-7
@@ -86,15 +86,41 @@ static int cmd_history(const char *pkg)
|
||||
static int cmd_start(const char *spec)
|
||||
{
|
||||
if (geteuid() != 0) { printf("ERR permission denied (root only)\n"); return 1; }
|
||||
char line[512];
|
||||
char line[800];
|
||||
snprintf(line, sizeof line, "start %s\n", spec);
|
||||
return am_query(line);
|
||||
}
|
||||
|
||||
static int cmd_resolve(const char *spec)
|
||||
{
|
||||
/* spec: <pkg> <activity>(两参数)。 */
|
||||
char line[800];
|
||||
snprintf(line, sizeof line, "resolve %s\n", spec);
|
||||
return am_query(line);
|
||||
}
|
||||
|
||||
static int cmd_picker(const char *action)
|
||||
{
|
||||
if (geteuid() != 0) { printf("ERR permission denied (root only)\n"); return 1; }
|
||||
char line[800];
|
||||
snprintf(line, sizeof line, "picker %s\n", action);
|
||||
return am_query(line);
|
||||
}
|
||||
|
||||
static int cmd_picker_status(const char *reqid)
|
||||
{
|
||||
char line[800];
|
||||
if (reqid && reqid[0])
|
||||
snprintf(line, sizeof line, "picker-status %s\n", reqid);
|
||||
else
|
||||
snprintf(line, sizeof line, "picker-status\n");
|
||||
return am_query(line);
|
||||
}
|
||||
|
||||
static int cmd_kill(const char *pkg)
|
||||
{
|
||||
if (geteuid() != 0) { printf("ERR permission denied (root only)\n"); return 1; }
|
||||
char line[512];
|
||||
char line[800];
|
||||
snprintf(line, sizeof line, "kill %s\n", pkg);
|
||||
return am_query(line);
|
||||
}
|
||||
@@ -103,8 +129,9 @@ static void usage(const char *a0)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"usage: %s [--sock <path>] status|list|history [pkg]|start <pkg>[/<act>]|kill <pkg>\n"
|
||||
" %s resolve <pkg> <activity> | picker <action> | picker-status [reqid]\n"
|
||||
" --sock <path> amsd socket (default %s, or $MEOW_AMS_SOCK)\n",
|
||||
a0, AMS_SOCK_DEFAULT);
|
||||
a0, a0, AMS_SOCK_DEFAULT);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
@@ -112,17 +139,25 @@ int main(int argc, char **argv)
|
||||
const char *env = getenv("MEOW_AMS_SOCK");
|
||||
g_sock = (env && env[0]) ? env : AMS_SOCK_DEFAULT;
|
||||
|
||||
const char *cmd = NULL, *arg = NULL;
|
||||
const char *cmd = NULL;
|
||||
char spec[768] = ""; /* 子命令后所有位置参数,空格拼接(resolve 需 pkg+act 两参) */
|
||||
int spec_n = 0;
|
||||
for (int i = 1; i < argc; i++) {
|
||||
const char *a = argv[i];
|
||||
if (!strcmp(a, "--sock") && i + 1 < argc) g_sock = argv[++i];
|
||||
else if (!strcmp(a, "-h") || !strcmp(a, "--help")) { usage(argv[0]); return 0; }
|
||||
else if (a[0] == '-') { usage(argv[0]); return 2; }
|
||||
else if (!cmd) cmd = a;
|
||||
else if (!arg) arg = a;
|
||||
else { fprintf(stderr, "extra arg %s\n", a); return 2; }
|
||||
else if (!cmd) { cmd = a; }
|
||||
else {
|
||||
int w = snprintf(spec + spec_n, sizeof spec - spec_n, "%s%s",
|
||||
spec_n ? " " : "", a);
|
||||
if (w < 0) break;
|
||||
spec_n += w;
|
||||
if ((size_t)spec_n >= sizeof spec - 1) break;
|
||||
}
|
||||
}
|
||||
if (!cmd) { usage(argv[0]); return 2; }
|
||||
const char *arg = spec[0] ? spec : NULL;
|
||||
|
||||
if (!strcmp(cmd, "status")) return cmd_status();
|
||||
if (!strcmp(cmd, "list")) return cmd_list();
|
||||
@@ -135,6 +170,17 @@ int main(int argc, char **argv)
|
||||
if (!arg) { fprintf(stderr, "kill needs <pkg>\n"); return 2; }
|
||||
return cmd_kill(arg);
|
||||
}
|
||||
if (!strcmp(cmd, "resolve")) {
|
||||
if (!arg) { fprintf(stderr, "resolve needs <pkg> <activity>\n"); return 2; }
|
||||
return cmd_resolve(arg);
|
||||
}
|
||||
if (!strcmp(cmd, "picker")) {
|
||||
if (!arg) { fprintf(stderr, "picker needs <action>\n"); return 2; }
|
||||
return cmd_picker(arg);
|
||||
}
|
||||
if (!strcmp(cmd, "picker-status")) {
|
||||
return cmd_picker_status(arg);
|
||||
}
|
||||
usage(argv[0]);
|
||||
return 2;
|
||||
}
|
||||
Reference in new issue
Block a user