diff options
-rw-r--r-- | tools/perf/Makefile | 1 | ||||
-rw-r--r-- | tools/perf/ui/gtk/gtk.h | 1 | ||||
-rw-r--r-- | tools/perf/ui/gtk/progress.c | 50 | ||||
-rw-r--r-- | tools/perf/ui/gtk/setup.c | 2 |
4 files changed, 54 insertions, 0 deletions
diff --git a/tools/perf/Makefile b/tools/perf/Makefile index f8466b49b922..5a9075ea218e 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile | |||
@@ -648,6 +648,7 @@ ifndef NO_GTK2 | |||
648 | LIB_OBJS += $(OUTPUT)ui/gtk/setup.o | 648 | LIB_OBJS += $(OUTPUT)ui/gtk/setup.o |
649 | LIB_OBJS += $(OUTPUT)ui/gtk/util.o | 649 | LIB_OBJS += $(OUTPUT)ui/gtk/util.o |
650 | LIB_OBJS += $(OUTPUT)ui/gtk/helpline.o | 650 | LIB_OBJS += $(OUTPUT)ui/gtk/helpline.o |
651 | LIB_OBJS += $(OUTPUT)ui/gtk/progress.o | ||
651 | # Make sure that it'd be included only once. | 652 | # Make sure that it'd be included only once. |
652 | ifeq ($(findstring -DNEWT_SUPPORT,$(BASIC_CFLAGS)),) | 653 | ifeq ($(findstring -DNEWT_SUPPORT,$(BASIC_CFLAGS)),) |
653 | LIB_OBJS += $(OUTPUT)ui/setup.o | 654 | LIB_OBJS += $(OUTPUT)ui/setup.o |
diff --git a/tools/perf/ui/gtk/gtk.h b/tools/perf/ui/gtk/gtk.h index 687af0bba187..856320e2cc05 100644 --- a/tools/perf/ui/gtk/gtk.h +++ b/tools/perf/ui/gtk/gtk.h | |||
@@ -30,6 +30,7 @@ struct perf_gtk_context *perf_gtk__activate_context(GtkWidget *window); | |||
30 | int perf_gtk__deactivate_context(struct perf_gtk_context **ctx); | 30 | int perf_gtk__deactivate_context(struct perf_gtk_context **ctx); |
31 | 31 | ||
32 | void perf_gtk__init_helpline(void); | 32 | void perf_gtk__init_helpline(void); |
33 | void perf_gtk__init_progress(void); | ||
33 | void perf_gtk__init_hpp(void); | 34 | void perf_gtk__init_hpp(void); |
34 | 35 | ||
35 | #ifndef HAVE_GTK_INFO_BAR | 36 | #ifndef HAVE_GTK_INFO_BAR |
diff --git a/tools/perf/ui/gtk/progress.c b/tools/perf/ui/gtk/progress.c new file mode 100644 index 000000000000..903426fe27cf --- /dev/null +++ b/tools/perf/ui/gtk/progress.c | |||
@@ -0,0 +1,50 @@ | |||
1 | #include <inttypes.h> | ||
2 | |||
3 | #include "gtk.h" | ||
4 | #include "../progress.h" | ||
5 | #include "util.h" | ||
6 | |||
7 | static GtkWidget *dialog; | ||
8 | static GtkWidget *progress; | ||
9 | |||
10 | static void gtk_progress_update(u64 curr, u64 total, const char *title) | ||
11 | { | ||
12 | double fraction = total ? 1.0 * curr / total : 0.0; | ||
13 | char buf[1024]; | ||
14 | |||
15 | if (dialog == NULL) { | ||
16 | GtkWidget *vbox = gtk_vbox_new(TRUE, 5); | ||
17 | GtkWidget *label = gtk_label_new(title); | ||
18 | |||
19 | dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL); | ||
20 | progress = gtk_progress_bar_new(); | ||
21 | |||
22 | gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, FALSE, 3); | ||
23 | gtk_box_pack_start(GTK_BOX(vbox), progress, TRUE, TRUE, 3); | ||
24 | |||
25 | gtk_container_add(GTK_CONTAINER(dialog), vbox); | ||
26 | |||
27 | gtk_window_set_title(GTK_WINDOW(dialog), "perf"); | ||
28 | gtk_window_resize(GTK_WINDOW(dialog), 300, 80); | ||
29 | gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); | ||
30 | |||
31 | gtk_widget_show_all(dialog); | ||
32 | } | ||
33 | |||
34 | gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), fraction); | ||
35 | snprintf(buf, sizeof(buf), "%"PRIu64" / %"PRIu64, curr, total); | ||
36 | gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), buf); | ||
37 | |||
38 | /* we didn't call gtk_main yet, so do it manually */ | ||
39 | while (gtk_events_pending()) | ||
40 | gtk_main_iteration(); | ||
41 | } | ||
42 | |||
43 | static struct ui_progress gtk_progress_fns = { | ||
44 | .update = gtk_progress_update, | ||
45 | }; | ||
46 | |||
47 | void perf_gtk__init_progress(void) | ||
48 | { | ||
49 | progress_fns = >k_progress_fns; | ||
50 | } | ||
diff --git a/tools/perf/ui/gtk/setup.c b/tools/perf/ui/gtk/setup.c index 3c4c6ef78283..6c2dd2e423f3 100644 --- a/tools/perf/ui/gtk/setup.c +++ b/tools/perf/ui/gtk/setup.c | |||
@@ -8,7 +8,9 @@ int perf_gtk__init(void) | |||
8 | { | 8 | { |
9 | perf_error__register(&perf_gtk_eops); | 9 | perf_error__register(&perf_gtk_eops); |
10 | perf_gtk__init_helpline(); | 10 | perf_gtk__init_helpline(); |
11 | perf_gtk__init_progress(); | ||
11 | perf_gtk__init_hpp(); | 12 | perf_gtk__init_hpp(); |
13 | |||
12 | return gtk_init_check(NULL, NULL) ? 0 : -1; | 14 | return gtk_init_check(NULL, NULL) ? 0 : -1; |
13 | } | 15 | } |
14 | 16 | ||