[tip:perf/core] perf ui progress: Add ui specific init function

From: tip-bot for Jiri Olsa
Date: Fri Sep 22 2017 - 12:37:15 EST


Commit-ID: 25cc4eb44b0c840eff0e5a46a85b9ccbde77401b
Gitweb: http://git.kernel.org/tip/25cc4eb44b0c840eff0e5a46a85b9ccbde77401b
Author: Jiri Olsa <jolsa@xxxxxxxxxx>
AuthorDate: Fri, 8 Sep 2017 14:05:09 +0200
Committer: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
CommitDate: Wed, 13 Sep 2017 09:49:15 -0300

perf ui progress: Add ui specific init function

Adding ui specific init function allowing to setup the progress bar
width based on current screen scales.

Adding TUI init function to get more grained update of the progress bar.

Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx>
Cc: David Ahern <dsahern@xxxxxxxxx>
Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
Cc: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
Link: http://lkml.kernel.org/r/20170908120510.22515-4-jolsa@xxxxxxxxxx
Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
---
tools/perf/ui/progress.c | 2 ++
tools/perf/ui/progress.h | 1 +
tools/perf/ui/tui/progress.c | 9 +++++++--
3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/tools/perf/ui/progress.c b/tools/perf/ui/progress.c
index ae91c81..3e2b5d6 100644
--- a/tools/perf/ui/progress.c
+++ b/tools/perf/ui/progress.c
@@ -34,6 +34,8 @@ void ui_progress__init(struct ui_progress *p, u64 total, const char *title)
p->total = total;
p->title = title;

+ if (ui_progress__ops->init)
+ ui_progress__ops->init(p);
}

void ui_progress__finish(void)
diff --git a/tools/perf/ui/progress.h b/tools/perf/ui/progress.h
index 717d39d..e5f434a 100644
--- a/tools/perf/ui/progress.h
+++ b/tools/perf/ui/progress.h
@@ -14,6 +14,7 @@ void ui_progress__init(struct ui_progress *p, u64 total, const char *title);
void ui_progress__update(struct ui_progress *p, u64 adv);

struct ui_progress_ops {
+ void (*init)(struct ui_progress *p);
void (*update)(struct ui_progress *p);
void (*finish)(void);
};
diff --git a/tools/perf/ui/tui/progress.c b/tools/perf/ui/tui/progress.c
index c4b9900..f6b8f52 100644
--- a/tools/perf/ui/tui/progress.c
+++ b/tools/perf/ui/tui/progress.c
@@ -5,6 +5,11 @@
#include "tui.h"
#include "../browser.h"

+static void __tui_progress__init(struct ui_progress *p)
+{
+ p->next = p->step = p->total / (SLtt_Screen_Cols - 2) ?: 1;
+}
+
static void tui_progress__update(struct ui_progress *p)
{
int bar, y;
@@ -49,8 +54,8 @@ static void tui_progress__finish(void)
pthread_mutex_unlock(&ui__lock);
}

-static struct ui_progress_ops tui_progress__ops =
-{
+static struct ui_progress_ops tui_progress__ops = {
+ .init = __tui_progress__init,
.update = tui_progress__update,
.finish = tui_progress__finish,
};