[monitor] add scale factor option to dump 93/135093/2
authorRoman Marchenko <r.marchenko@samsung.com>
Thu, 15 Jun 2017 12:48:42 +0000 (15:48 +0300)
committerSooChan Lim <sc1.lim@samsung.com>
Wed, 28 Jun 2017 04:53:53 +0000 (04:53 +0000)
Change-Id: I9d8c78ce066f1c06f2832cb65b36c62fbac7ed0a
Signed-off-by: Roman Marchenko <r.marchenko@samsung.com>
Signed-off-by: SooChan Lim <sc1.lim@samsung.com>
src/wayland-tbm-client.c
src/wayland-tbm-int.h
src/wayland-tbm-monitor-server.c
src/wayland-tbm-util.c

index 70c89a4..e220a7d 100644 (file)
@@ -237,7 +237,12 @@ void _waylend_tbm_monitor_client_show(int argc, char *argv[],
 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());
 }
 
@@ -245,9 +250,15 @@ void _waylend_tbm_monitor_client_dump_queue(int argc, char *argv[],
                                      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));
 }
index f6eda58..69e4d7d 100644 (file)
@@ -185,16 +185,19 @@ int
 _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);
index 85d4423..346de9b 100644 (file)
@@ -286,14 +286,20 @@ static void
 _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);
@@ -304,21 +310,32 @@ _waylend_tbm_monitor_server_dump_queue(struct wayland_tbm_monitore_request *r)
 {
        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));
        }
@@ -371,13 +388,13 @@ static struct {
        {
                "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",
@@ -386,7 +403,8 @@ static struct {
                ,
                "<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"
@@ -395,7 +413,7 @@ static struct {
                "\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>;"
        }
 };
 
index cbb471b..1249948 100644 (file)
@@ -86,6 +86,21 @@ _waylend_tbm_util_target_parse(char * target_str, struct wayland_tbm_monitor_tar
        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)
 {
@@ -164,10 +179,11 @@ _waylend_tbm_util_trace(WL_TBM_MONITOR_PROC_STATE cmd, tbm_bufmgr bufmgr)
 }
 
 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;
@@ -175,7 +191,7 @@ _waylend_tbm_util_dump_snapshot(tbm_bufmgr bufmgr)
 }
 
 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;
 
@@ -184,8 +200,10 @@ _waylend_tbm_util_dump_queue(WL_TBM_MONITOR_PROC_STATE cmd, tbm_bufmgr bufmgr)
                        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) {