diff options
author | Namhyung Kim <namhyung.kim@lge.com> | 2012-11-13 08:30:34 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2012-11-14 14:52:56 -0500 |
commit | a5580f3ecb295a514f9522daf0ef7158f73ec2d6 (patch) | |
tree | b169a9a701813ee479654bbc83254d90290f889f /tools/perf | |
parent | a753579c3ec096bba9d24e1594a07dbb25aca8e4 (diff) |
perf ui: Add ui_progress__finish()
Sometimes we need to know when the progress bar should disappear.
Checking curr >= total wasn't enough since there're cases not met that
condition for the last call.
So add a new ->finish callback to identify this explicitly. Currently
only GTK frontend needs it.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1352813436-14173-4-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r-- | tools/perf/ui/gtk/progress.c | 9 | ||||
-rw-r--r-- | tools/perf/ui/progress.c | 6 | ||||
-rw-r--r-- | tools/perf/ui/progress.h | 2 | ||||
-rw-r--r-- | tools/perf/util/debug.h | 1 | ||||
-rw-r--r-- | tools/perf/util/session.c | 1 |
5 files changed, 19 insertions, 0 deletions
diff --git a/tools/perf/ui/gtk/progress.c b/tools/perf/ui/gtk/progress.c index 903426fe27cf..482bcf3df9b7 100644 --- a/tools/perf/ui/gtk/progress.c +++ b/tools/perf/ui/gtk/progress.c | |||
@@ -40,8 +40,17 @@ static void gtk_progress_update(u64 curr, u64 total, const char *title) | |||
40 | gtk_main_iteration(); | 40 | gtk_main_iteration(); |
41 | } | 41 | } |
42 | 42 | ||
43 | static void gtk_progress_finish(void) | ||
44 | { | ||
45 | /* this will also destroy all of its children */ | ||
46 | gtk_widget_destroy(dialog); | ||
47 | |||
48 | dialog = NULL; | ||
49 | } | ||
50 | |||
43 | static struct ui_progress gtk_progress_fns = { | 51 | static struct ui_progress gtk_progress_fns = { |
44 | .update = gtk_progress_update, | 52 | .update = gtk_progress_update, |
53 | .finish = gtk_progress_finish, | ||
45 | }; | 54 | }; |
46 | 55 | ||
47 | void perf_gtk__init_progress(void) | 56 | void perf_gtk__init_progress(void) |
diff --git a/tools/perf/ui/progress.c b/tools/perf/ui/progress.c index f5e4d1b95c75..3ec695607a4d 100644 --- a/tools/perf/ui/progress.c +++ b/tools/perf/ui/progress.c | |||
@@ -18,3 +18,9 @@ void ui_progress__update(u64 curr, u64 total, const char *title) | |||
18 | { | 18 | { |
19 | return progress_fns->update(curr, total, title); | 19 | return progress_fns->update(curr, total, title); |
20 | } | 20 | } |
21 | |||
22 | void ui_progress__finish(void) | ||
23 | { | ||
24 | if (progress_fns->finish) | ||
25 | progress_fns->finish(); | ||
26 | } | ||
diff --git a/tools/perf/ui/progress.h b/tools/perf/ui/progress.h index 717814b32169..257cc224f9cf 100644 --- a/tools/perf/ui/progress.h +++ b/tools/perf/ui/progress.h | |||
@@ -5,6 +5,7 @@ | |||
5 | 5 | ||
6 | struct ui_progress { | 6 | struct ui_progress { |
7 | void (*update)(u64, u64, const char *); | 7 | void (*update)(u64, u64, const char *); |
8 | void (*finish)(void); | ||
8 | }; | 9 | }; |
9 | 10 | ||
10 | extern struct ui_progress *progress_fns; | 11 | extern struct ui_progress *progress_fns; |
@@ -12,5 +13,6 @@ extern struct ui_progress *progress_fns; | |||
12 | void ui_progress__init(void); | 13 | void ui_progress__init(void); |
13 | 14 | ||
14 | void ui_progress__update(u64 curr, u64 total, const char *title); | 15 | void ui_progress__update(u64 curr, u64 total, const char *title); |
16 | void ui_progress__finish(void); | ||
15 | 17 | ||
16 | #endif | 18 | #endif |
diff --git a/tools/perf/util/debug.h b/tools/perf/util/debug.h index dec98750b484..83e8d234af6b 100644 --- a/tools/perf/util/debug.h +++ b/tools/perf/util/debug.h | |||
@@ -26,6 +26,7 @@ int ui__error(const char *format, ...) __attribute__((format(printf, 1, 2))); | |||
26 | static inline void ui_progress__update(u64 curr __maybe_unused, | 26 | static inline void ui_progress__update(u64 curr __maybe_unused, |
27 | u64 total __maybe_unused, | 27 | u64 total __maybe_unused, |
28 | const char *title __maybe_unused) {} | 28 | const char *title __maybe_unused) {} |
29 | static inline void ui_progress__finish(void) {} | ||
29 | 30 | ||
30 | #define ui__error(format, arg...) ui__warning(format, ##arg) | 31 | #define ui__error(format, arg...) ui__warning(format, ##arg) |
31 | 32 | ||
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 15abe40dc702..ce6f51162386 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c | |||
@@ -1458,6 +1458,7 @@ more: | |||
1458 | session->ordered_samples.next_flush = ULLONG_MAX; | 1458 | session->ordered_samples.next_flush = ULLONG_MAX; |
1459 | err = flush_sample_queue(session, tool); | 1459 | err = flush_sample_queue(session, tool); |
1460 | out_err: | 1460 | out_err: |
1461 | ui_progress__finish(); | ||
1461 | perf_session__warn_about_errors(session, tool); | 1462 | perf_session__warn_about_errors(session, tool); |
1462 | perf_session_free_sample_buffers(session); | 1463 | perf_session_free_sample_buffers(session); |
1463 | return err; | 1464 | return err; |