void _waylend_tbm_monitor_client_dump_snapshot(int argc, char *argv[],
char *reply, int *len, struct wayland_tbm_client *tbm_client)
{
- _waylend_tbm_util_dump_snapshot(tbm_client->bufmgr);
+ double scale = 0;
+
+ if (!_waylend_tbm_util_scale_parse(argv[2], &scale))
+ return;
+
+ _waylend_tbm_util_dump_snapshot(tbm_client->bufmgr, scale);
WL_TBM_MONITOR_SNPRINTF(reply, *len, "client(%d): snapshot dump is done\n", getpid());
}
char *reply, int *len, struct wayland_tbm_client *tbm_client)
{
WL_TBM_MONITOR_PROC_STATE cmd, new_state = WL_TBM_MONITOR_PROC_STATE_UNREGISTER;
+ double scale = 0;
cmd = _waylend_tbm_util_proc_state_parse(argv[1]);
- new_state = _waylend_tbm_util_dump_queue(cmd, tbm_client->bufmgr);
+ if (cmd == WL_TBM_MONITOR_PROC_STATE_ON) {
+ if (!_waylend_tbm_util_scale_parse(argv[2], &scale))
+ return;
+ }
+
+ new_state = _waylend_tbm_util_dump_queue(cmd, tbm_client->bufmgr, scale);
WL_TBM_MONITOR_SNPRINTF(reply, *len, "client(%d): queue dump state: %s\n", getpid(),
_waylend_tbm_util_proc_state_to_str(new_state));
}
_waylend_tbm_util_target_parse(char * target_str, struct wayland_tbm_monitor_target *target);
int
+_waylend_tbm_util_scale_parse(char * scale_str, double *scale);
+
+int
_wayland_tbm_util_show_path_parse(char * path_str, char * cwd, struct wayland_tbm_monitor_path *path);
WL_TBM_MONITOR_PROC_STATE
_waylend_tbm_util_proc_state_parse(char * str);
WL_TBM_MONITOR_PROC_STATE
-_waylend_tbm_util_dump_queue(WL_TBM_MONITOR_PROC_STATE cmd, tbm_bufmgr bufmgr);
+_waylend_tbm_util_dump_queue(WL_TBM_MONITOR_PROC_STATE cmd, tbm_bufmgr bufmgr, double scale);
void
-_waylend_tbm_util_dump_snapshot(tbm_bufmgr bufmgr);
+_waylend_tbm_util_dump_snapshot(tbm_bufmgr bufmgr, double scale);
WL_TBM_MONITOR_PROC_STATE
_waylend_tbm_util_trace(WL_TBM_MONITOR_PROC_STATE cmd, tbm_bufmgr bufmgr);
_waylend_tbm_monitor_server_dump_snapshot(struct wayland_tbm_monitore_request *r)
{
struct wayland_tbm_monitor_target target = {0};
+ double scale = 0;
if (!_waylend_tbm_util_target_parse(r->argv[1], &target)) {
_wayland_tbm_monitor_request_printf(r, "'%s' - unknown target for -dump_snapshot\n", r->argv[2]);
return;
}
+ if (!_waylend_tbm_util_scale_parse(r->argv[2], &scale)) {
+ _wayland_tbm_monitor_request_printf(r, "'%s' - unknown scale for -dump_snapshot\n", r->argv[2]);
+ return;
+ }
+
if (target.server) {
- _waylend_tbm_util_dump_snapshot(r->tbm_srv->bufmgr);
+ _waylend_tbm_util_dump_snapshot(r->tbm_srv->bufmgr, scale);
_wayland_tbm_monitor_request_printf(r, "server: snapshot dump is done\n");
}
_send_request_to_client_with_wait(r, &target, 1);
{
struct wayland_tbm_monitor_target target = {0};
WL_TBM_MONITOR_PROC_STATE cmd, new_state;
+ double scale = 0;
cmd = _waylend_tbm_util_proc_state_parse(r->argv[1]);
if (cmd == WL_TBM_MONITOR_PROC_STATE_UNKNOWN) {
- _wayland_tbm_monitor_request_printf(r, "'%s' - unknown option for dump\n", r->argv[1]);
+ _wayland_tbm_monitor_request_printf(r, "'%s' - unknown option for -dump_queue\n", r->argv[1]);
_wayland_tbm_monitor_server_usage(r);
return;
}
- if (!_waylend_tbm_util_target_parse(r->argv[2], &target)) {
- _wayland_tbm_monitor_request_printf(r, "'%s' - unknown target for dump\n", r->argv[2]);
- return;
+ if (cmd != WL_TBM_MONITOR_PROC_STATE_ON) {
+ if (!_waylend_tbm_util_target_parse(r->argv[2], &target)) {
+ _wayland_tbm_monitor_request_printf(r, "'%s' - unknown target for -dump_queue\n", r->argv[2]);
+ return;
+ }
+ }
+ else {
+ target.all = 1;
+ target.server = 1;
+ if (!_waylend_tbm_util_scale_parse(r->argv[2], &scale)) {
+ _wayland_tbm_monitor_request_printf(r, "'%s' - unknown scale for -dump_queue\n", r->argv[2]);
+ return;
+ }
}
if (target.server) {
- new_state = _waylend_tbm_util_dump_queue(cmd, r->tbm_srv->bufmgr);
+ new_state = _waylend_tbm_util_dump_queue(cmd, r->tbm_srv->bufmgr, scale);
_wayland_tbm_monitor_request_printf(r, "server: queue dump state: %s\n",
_waylend_tbm_util_proc_state_to_str(new_state));
}
{
"dump_snapshot",
_waylend_tbm_monitor_server_dump_snapshot,
- "make dumps of all tbm_surfaces for (all | server | client=<pid>)"
+ "make dumps of all tbm_surfaces for (all | server | client=<pid>) with scale"
,
" client=<pid> - the client with <pid> (use -list to get pid)\n"
"\t\t"" server - the server\n"
"\t\t"" all - clients and server\n"
,
- "all; client=<pid>"
+ "all scale=0.5; client=<pid> scale=0.5"
},
{
"dump_queue",
,
"<cmd> [<target>]\n"
"\t\t"" <cmd>\n"
- "\t\t"" on | off - turn on/off the dump\n"
+ "\t\t"" on [scale] - turn on the dump with scale\n"
+ "\t\t"" off - turn off the dump\n"
"\t\t"" status - show status of all targets\n"
"\t\t"" register <target> - register <target> to dump\n"
"\t\t"" unregister <target> - unregister <target> to dump\n"
"\t\t"" server - the server\n"
"\t\t"" all - clients and server\n"
,
- "on; off; register client=<pid>;"
+ "on scale=0.5; off; register client=<pid>;"
}
};
return 0;
}
+int
+_waylend_tbm_util_scale_parse(char * scale_str, double *scale)
+{
+ *scale = 0;
+
+ if (!scale_str)
+ return 1;
+
+ if (sscanf(scale_str, "scale=%lf", scale) == 1)
+ if(*scale >= 0 && *scale <= 1)
+ return 1;
+
+ return 0;
+}
+
WL_TBM_MONITOR_PROC_STATE
_waylend_tbm_util_proc_state_parse(char *str)
{
}
void
-_waylend_tbm_util_dump_snapshot(tbm_bufmgr bufmgr)
+_waylend_tbm_util_dump_snapshot(tbm_bufmgr bufmgr, double scale)
{
char *path = _wayland_tbm_dump_directory_make();
if (path) {
+ tbm_bufmgr_debug_dump_set_scale(scale);
tbm_bufmgr_debug_dump_all(path);
free(path);
path = NULL;
}
WL_TBM_MONITOR_PROC_STATE
-_waylend_tbm_util_dump_queue(WL_TBM_MONITOR_PROC_STATE cmd, tbm_bufmgr bufmgr)
+_waylend_tbm_util_dump_queue(WL_TBM_MONITOR_PROC_STATE cmd, tbm_bufmgr bufmgr, double scale)
{
static char *path = NULL;
dump_state = WL_TBM_MONITOR_PROC_STATE_ON;
if (path == NULL) {
path = _wayland_tbm_dump_directory_make();
- if (path != NULL)
+ if (path != NULL) {
+ tbm_bufmgr_debug_dump_set_scale(scale);
tbm_bufmgr_debug_queue_dump(path, 20, 1);
+ }
}
}
} else if (cmd == WL_TBM_MONITOR_PROC_STATE_OFF) {