From 7f1bfc7e80e4a1ff73b81a0a45e05e11c1e25816 Mon Sep 17 00:00:00 2001 From: Namhyung Kim Date: Tue, 13 Nov 2012 22:30:34 +0900 Subject: [PATCH] --- yaml --- r: 339034 b: refs/heads/master c: a5580f3ecb295a514f9522daf0ef7158f73ec2d6 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/tools/perf/ui/gtk/progress.c | 9 +++++++++ trunk/tools/perf/ui/progress.c | 6 ++++++ trunk/tools/perf/ui/progress.h | 2 ++ trunk/tools/perf/util/debug.h | 1 + trunk/tools/perf/util/session.c | 1 + 6 files changed, 20 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index b85719c8963d..8f6c3fca3b01 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a753579c3ec096bba9d24e1594a07dbb25aca8e4 +refs/heads/master: a5580f3ecb295a514f9522daf0ef7158f73ec2d6 diff --git a/trunk/tools/perf/ui/gtk/progress.c b/trunk/tools/perf/ui/gtk/progress.c index 903426fe27cf..482bcf3df9b7 100644 --- a/trunk/tools/perf/ui/gtk/progress.c +++ b/trunk/tools/perf/ui/gtk/progress.c @@ -40,8 +40,17 @@ static void gtk_progress_update(u64 curr, u64 total, const char *title) gtk_main_iteration(); } +static void gtk_progress_finish(void) +{ + /* this will also destroy all of its children */ + gtk_widget_destroy(dialog); + + dialog = NULL; +} + static struct ui_progress gtk_progress_fns = { .update = gtk_progress_update, + .finish = gtk_progress_finish, }; void perf_gtk__init_progress(void) diff --git a/trunk/tools/perf/ui/progress.c b/trunk/tools/perf/ui/progress.c index f5e4d1b95c75..3ec695607a4d 100644 --- a/trunk/tools/perf/ui/progress.c +++ b/trunk/tools/perf/ui/progress.c @@ -18,3 +18,9 @@ void ui_progress__update(u64 curr, u64 total, const char *title) { return progress_fns->update(curr, total, title); } + +void ui_progress__finish(void) +{ + if (progress_fns->finish) + progress_fns->finish(); +} diff --git a/trunk/tools/perf/ui/progress.h b/trunk/tools/perf/ui/progress.h index 717814b32169..257cc224f9cf 100644 --- a/trunk/tools/perf/ui/progress.h +++ b/trunk/tools/perf/ui/progress.h @@ -5,6 +5,7 @@ struct ui_progress { void (*update)(u64, u64, const char *); + void (*finish)(void); }; extern struct ui_progress *progress_fns; @@ -12,5 +13,6 @@ extern struct ui_progress *progress_fns; void ui_progress__init(void); void ui_progress__update(u64 curr, u64 total, const char *title); +void ui_progress__finish(void); #endif diff --git a/trunk/tools/perf/util/debug.h b/trunk/tools/perf/util/debug.h index dec98750b484..83e8d234af6b 100644 --- a/trunk/tools/perf/util/debug.h +++ b/trunk/tools/perf/util/debug.h @@ -26,6 +26,7 @@ int ui__error(const char *format, ...) __attribute__((format(printf, 1, 2))); static inline void ui_progress__update(u64 curr __maybe_unused, u64 total __maybe_unused, const char *title __maybe_unused) {} +static inline void ui_progress__finish(void) {} #define ui__error(format, arg...) ui__warning(format, ##arg) diff --git a/trunk/tools/perf/util/session.c b/trunk/tools/perf/util/session.c index 15abe40dc702..ce6f51162386 100644 --- a/trunk/tools/perf/util/session.c +++ b/trunk/tools/perf/util/session.c @@ -1458,6 +1458,7 @@ int __perf_session__process_events(struct perf_session *session, session->ordered_samples.next_flush = ULLONG_MAX; err = flush_sample_queue(session, tool); out_err: + ui_progress__finish(); perf_session__warn_about_errors(session, tool); perf_session_free_sample_buffers(session); return err;