diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2010-08-10 14:44:20 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2010-08-10 14:44:20 -0400 |
commit | 59e8fe32fc0cc9dff6b0c269d099a49e004dc45e (patch) | |
tree | 55133961ebcbf9ea5b5ab674360207876c189349 /tools | |
parent | f1e9214cc99644101d957c5c660946c6f2f86d7c (diff) |
perf ui browser: Add ui_browser__show counterpart: __hide
So that the common tasks of providing a helpline at __run entry and
destroying the window and releasing resourses at exit can be abstracted
away, reducing a bit more the coupling with libnewt.
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/util/ui/browser.c | 18 | ||||
-rw-r--r-- | tools/perf/util/ui/browser.h | 4 | ||||
-rw-r--r-- | tools/perf/util/ui/browsers/annotate.c | 8 | ||||
-rw-r--r-- | tools/perf/util/ui/browsers/hists.c | 5 | ||||
-rw-r--r-- | tools/perf/util/ui/browsers/map.c | 10 | ||||
-rw-r--r-- | tools/perf/util/ui/helpline.c | 2 | ||||
-rw-r--r-- | tools/perf/util/ui/helpline.h | 1 |
7 files changed, 33 insertions, 15 deletions
diff --git a/tools/perf/util/ui/browser.c b/tools/perf/util/ui/browser.c index 83d57487f6ef..66f2d583d8c4 100644 --- a/tools/perf/util/ui/browser.c +++ b/tools/perf/util/ui/browser.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <stdlib.h> | 16 | #include <stdlib.h> |
17 | #include <sys/ttydefaults.h> | 17 | #include <sys/ttydefaults.h> |
18 | #include "browser.h" | 18 | #include "browser.h" |
19 | #include "helpline.h" | ||
19 | #include "../color.h" | 20 | #include "../color.h" |
20 | #include "../util.h" | 21 | #include "../util.h" |
21 | 22 | ||
@@ -145,8 +146,11 @@ void ui_browser__reset_index(struct ui_browser *self) | |||
145 | self->seek(self, 0, SEEK_SET); | 146 | self->seek(self, 0, SEEK_SET); |
146 | } | 147 | } |
147 | 148 | ||
148 | int ui_browser__show(struct ui_browser *self, const char *title) | 149 | int ui_browser__show(struct ui_browser *self, const char *title, |
150 | const char *helpline, ...) | ||
149 | { | 151 | { |
152 | va_list ap; | ||
153 | |||
150 | if (self->form != NULL) { | 154 | if (self->form != NULL) { |
151 | newtFormDestroy(self->form); | 155 | newtFormDestroy(self->form); |
152 | newtPopWindow(); | 156 | newtPopWindow(); |
@@ -171,9 +175,21 @@ int ui_browser__show(struct ui_browser *self, const char *title) | |||
171 | newtFormAddHotKey(self->form, NEWT_KEY_END); | 175 | newtFormAddHotKey(self->form, NEWT_KEY_END); |
172 | newtFormAddHotKey(self->form, ' '); | 176 | newtFormAddHotKey(self->form, ' '); |
173 | newtFormAddComponent(self->form, self->sb); | 177 | newtFormAddComponent(self->form, self->sb); |
178 | |||
179 | va_start(ap, helpline); | ||
180 | ui_helpline__vpush(helpline, ap); | ||
181 | va_end(ap); | ||
174 | return 0; | 182 | return 0; |
175 | } | 183 | } |
176 | 184 | ||
185 | void ui_browser__hide(struct ui_browser *self) | ||
186 | { | ||
187 | newtFormDestroy(self->form); | ||
188 | newtPopWindow(); | ||
189 | self->form = NULL; | ||
190 | ui_helpline__pop(); | ||
191 | } | ||
192 | |||
177 | int ui_browser__refresh(struct ui_browser *self) | 193 | int ui_browser__refresh(struct ui_browser *self) |
178 | { | 194 | { |
179 | int row; | 195 | int row; |
diff --git a/tools/perf/util/ui/browser.h b/tools/perf/util/ui/browser.h index 856e34361729..0b9f829214f7 100644 --- a/tools/perf/util/ui/browser.h +++ b/tools/perf/util/ui/browser.h | |||
@@ -30,7 +30,9 @@ bool ui_browser__is_current_entry(struct ui_browser *self, unsigned row); | |||
30 | void ui_browser__refresh_dimensions(struct ui_browser *self); | 30 | void ui_browser__refresh_dimensions(struct ui_browser *self); |
31 | void ui_browser__reset_index(struct ui_browser *self); | 31 | void ui_browser__reset_index(struct ui_browser *self); |
32 | 32 | ||
33 | int ui_browser__show(struct ui_browser *self, const char *title); | 33 | int ui_browser__show(struct ui_browser *self, const char *title, |
34 | const char *helpline, ...); | ||
35 | void ui_browser__hide(struct ui_browser *self); | ||
34 | int ui_browser__refresh(struct ui_browser *self); | 36 | int ui_browser__refresh(struct ui_browser *self); |
35 | int ui_browser__run(struct ui_browser *self, struct newtExitStruct *es); | 37 | int ui_browser__run(struct ui_browser *self, struct newtExitStruct *es); |
36 | 38 | ||
diff --git a/tools/perf/util/ui/browsers/annotate.c b/tools/perf/util/ui/browsers/annotate.c index 73e78ef38a50..55ff792459ac 100644 --- a/tools/perf/util/ui/browsers/annotate.c +++ b/tools/perf/util/ui/browsers/annotate.c | |||
@@ -141,10 +141,10 @@ static int annotate_browser__run(struct annotate_browser *self, | |||
141 | struct rb_node *nd; | 141 | struct rb_node *nd; |
142 | struct hist_entry *he = self->b.priv; | 142 | struct hist_entry *he = self->b.priv; |
143 | 143 | ||
144 | if (ui_browser__show(&self->b, he->ms.sym->name) < 0) | 144 | if (ui_browser__show(&self->b, he->ms.sym->name, |
145 | "<- or ESC: exit, TAB/shift+TAB: cycle thru samples") < 0) | ||
145 | return -1; | 146 | return -1; |
146 | 147 | ||
147 | ui_helpline__fpush("<- or ESC: exit, TAB/shift+TAB: cycle thru samples"); | ||
148 | newtFormAddHotKey(self->b.form, NEWT_KEY_LEFT); | 148 | newtFormAddHotKey(self->b.form, NEWT_KEY_LEFT); |
149 | 149 | ||
150 | nd = self->curr_hot; | 150 | nd = self->curr_hot; |
@@ -177,9 +177,7 @@ static int annotate_browser__run(struct annotate_browser *self, | |||
177 | } | 177 | } |
178 | } | 178 | } |
179 | out: | 179 | out: |
180 | newtFormDestroy(self->b.form); | 180 | ui_browser__hide(&self->b); |
181 | newtPopWindow(); | ||
182 | ui_helpline__pop(); | ||
183 | return 0; | 181 | return 0; |
184 | } | 182 | } |
185 | 183 | ||
diff --git a/tools/perf/util/ui/browsers/hists.c b/tools/perf/util/ui/browsers/hists.c index cee7998f1c33..dd512b73b015 100644 --- a/tools/perf/util/ui/browsers/hists.c +++ b/tools/perf/util/ui/browsers/hists.c | |||
@@ -211,7 +211,8 @@ static int hist_browser__run(struct hist_browser *self, const char *title, | |||
211 | nr_events, unit); | 211 | nr_events, unit); |
212 | newtDrawRootText(0, 0, str); | 212 | newtDrawRootText(0, 0, str); |
213 | 213 | ||
214 | if (ui_browser__show(&self->b, title) < 0) | 214 | if (ui_browser__show(&self->b, title, |
215 | "Press '?' for help on key bindings") < 0) | ||
215 | return -1; | 216 | return -1; |
216 | 217 | ||
217 | newtFormAddHotKey(self->b.form, 'A'); | 218 | newtFormAddHotKey(self->b.form, 'A'); |
@@ -253,6 +254,8 @@ static int hist_browser__run(struct hist_browser *self, const char *title, | |||
253 | return 0; | 254 | return 0; |
254 | } | 255 | } |
255 | } | 256 | } |
257 | |||
258 | ui_browser__hide(&self->b); | ||
256 | return 0; | 259 | return 0; |
257 | } | 260 | } |
258 | 261 | ||
diff --git a/tools/perf/util/ui/browsers/map.c b/tools/perf/util/ui/browsers/map.c index b79f0c996ea8..142b825b42bf 100644 --- a/tools/perf/util/ui/browsers/map.c +++ b/tools/perf/util/ui/browsers/map.c | |||
@@ -100,11 +100,11 @@ static int map_browser__search(struct map_browser *self) | |||
100 | 100 | ||
101 | static int map_browser__run(struct map_browser *self, struct newtExitStruct *es) | 101 | static int map_browser__run(struct map_browser *self, struct newtExitStruct *es) |
102 | { | 102 | { |
103 | if (ui_browser__show(&self->b, self->map->dso->long_name) < 0) | 103 | if (ui_browser__show(&self->b, self->map->dso->long_name, |
104 | "Press <- or ESC to exit, %s / to search", | ||
105 | verbose ? "" : "restart with -v to use") < 0) | ||
104 | return -1; | 106 | return -1; |
105 | 107 | ||
106 | ui_helpline__fpush("Press <- or ESC to exit, %s / to search", | ||
107 | verbose ? "" : "restart with -v to use"); | ||
108 | newtFormAddHotKey(self->b.form, NEWT_KEY_LEFT); | 108 | newtFormAddHotKey(self->b.form, NEWT_KEY_LEFT); |
109 | newtFormAddHotKey(self->b.form, NEWT_KEY_ENTER); | 109 | newtFormAddHotKey(self->b.form, NEWT_KEY_ENTER); |
110 | if (verbose) | 110 | if (verbose) |
@@ -121,9 +121,7 @@ static int map_browser__run(struct map_browser *self, struct newtExitStruct *es) | |||
121 | break; | 121 | break; |
122 | } | 122 | } |
123 | 123 | ||
124 | newtFormDestroy(self->b.form); | 124 | ui_browser__hide(&self->b); |
125 | newtPopWindow(); | ||
126 | ui_helpline__pop(); | ||
127 | return 0; | 125 | return 0; |
128 | } | 126 | } |
129 | 127 | ||
diff --git a/tools/perf/util/ui/helpline.c b/tools/perf/util/ui/helpline.c index ff584606a4dc..8d79daa4458a 100644 --- a/tools/perf/util/ui/helpline.c +++ b/tools/perf/util/ui/helpline.c | |||
@@ -16,7 +16,7 @@ void ui_helpline__push(const char *msg) | |||
16 | newtPushHelpLine(msg); | 16 | newtPushHelpLine(msg); |
17 | } | 17 | } |
18 | 18 | ||
19 | static void ui_helpline__vpush(const char *fmt, va_list ap) | 19 | void ui_helpline__vpush(const char *fmt, va_list ap) |
20 | { | 20 | { |
21 | char *s; | 21 | char *s; |
22 | 22 | ||
diff --git a/tools/perf/util/ui/helpline.h b/tools/perf/util/ui/helpline.h index 5d1e5e72ffb5..ab6028d0c401 100644 --- a/tools/perf/util/ui/helpline.h +++ b/tools/perf/util/ui/helpline.h | |||
@@ -4,6 +4,7 @@ | |||
4 | void ui_helpline__init(void); | 4 | void ui_helpline__init(void); |
5 | void ui_helpline__pop(void); | 5 | void ui_helpline__pop(void); |
6 | void ui_helpline__push(const char *msg); | 6 | void ui_helpline__push(const char *msg); |
7 | void ui_helpline__vpush(const char *fmt, va_list ap); | ||
7 | void ui_helpline__fpush(const char *fmt, ...); | 8 | void ui_helpline__fpush(const char *fmt, ...); |
8 | void ui_helpline__puts(const char *msg); | 9 | void ui_helpline__puts(const char *msg); |
9 | 10 | ||