]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
perf hists browser: Fix column indentation on --hierarchy
authorNamhyung Kim <namhyung@kernel.org>
Tue, 8 Nov 2016 13:08:32 +0000 (22:08 +0900)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 9 Nov 2016 14:45:58 +0000 (11:45 -0300)
When horizontall scrolling is used in hierarchy mode, the the right most
column has unnecessary indentation.  Actually it's needed only if some
of left (overhead) columns were shown.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Tested-by: Markus Trippelsdorf <markus@trippelsdorf.de>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20161108130833.9263-4-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/ui/browsers/hists.c

index e767fbd17ad2c30f8b4be89d1b3f1abdc338f7e5..a53fef0c673bbbfcf8669ffb66f5de079dbc7e18 100644 (file)
@@ -1361,8 +1361,10 @@ static int hist_browser__show_hierarchy_entry(struct hist_browser *browser,
                width -= hpp.buf - s;
        }
 
                width -= hpp.buf - s;
        }
 
-       ui_browser__write_nstring(&browser->b, "", hierarchy_indent);
-       width -= hierarchy_indent;
+       if (!first) {
+               ui_browser__write_nstring(&browser->b, "", hierarchy_indent);
+               width -= hierarchy_indent;
+       }
 
        if (column >= browser->b.horiz_scroll) {
                char s[2048];
 
        if (column >= browser->b.horiz_scroll) {
                char s[2048];
@@ -1565,6 +1567,7 @@ static int hists_browser__scnprintf_hierarchy_headers(struct hist_browser *brows
        if (advance_hpp_check(&dummy_hpp, ret))
                return ret;
 
        if (advance_hpp_check(&dummy_hpp, ret))
                return ret;
 
+       first_node = true;
        /* the first hpp_list_node is for overhead columns */
        fmt_node = list_first_entry(&hists->hpp_formats,
                                    struct perf_hpp_list_node, list);
        /* the first hpp_list_node is for overhead columns */
        fmt_node = list_first_entry(&hists->hpp_formats,
                                    struct perf_hpp_list_node, list);
@@ -1579,12 +1582,16 @@ static int hists_browser__scnprintf_hierarchy_headers(struct hist_browser *brows
                ret = scnprintf(dummy_hpp.buf, dummy_hpp.size, "  ");
                if (advance_hpp_check(&dummy_hpp, ret))
                        break;
                ret = scnprintf(dummy_hpp.buf, dummy_hpp.size, "  ");
                if (advance_hpp_check(&dummy_hpp, ret))
                        break;
+
+               first_node = false;
        }
 
        }
 
-       ret = scnprintf(dummy_hpp.buf, dummy_hpp.size, "%*s",
-                       indent * HIERARCHY_INDENT, "");
-       if (advance_hpp_check(&dummy_hpp, ret))
-               return ret;
+       if (!first_node) {
+               ret = scnprintf(dummy_hpp.buf, dummy_hpp.size, "%*s",
+                               indent * HIERARCHY_INDENT, "");
+               if (advance_hpp_check(&dummy_hpp, ret))
+                       return ret;
+       }
 
        first_node = true;
        list_for_each_entry_continue(fmt_node, &hists->hpp_formats, list) {
 
        first_node = true;
        list_for_each_entry_continue(fmt_node, &hists->hpp_formats, list) {