diff options
Diffstat (limited to 'tools/perf/ui/progress.c')
-rw-r--r-- | tools/perf/ui/progress.c | 44 |
1 files changed, 19 insertions, 25 deletions
diff --git a/tools/perf/ui/progress.c b/tools/perf/ui/progress.c index 13aa64e50e11..3ec695607a4d 100644 --- a/tools/perf/ui/progress.c +++ b/tools/perf/ui/progress.c | |||
@@ -1,32 +1,26 @@ | |||
1 | #include "../cache.h" | 1 | #include "../cache.h" |
2 | #include "progress.h" | 2 | #include "progress.h" |
3 | #include "libslang.h" | ||
4 | #include "ui.h" | ||
5 | #include "browser.h" | ||
6 | 3 | ||
7 | void ui_progress__update(u64 curr, u64 total, const char *title) | 4 | static void nop_progress_update(u64 curr __maybe_unused, |
5 | u64 total __maybe_unused, | ||
6 | const char *title __maybe_unused) | ||
8 | { | 7 | { |
9 | int bar, y; | 8 | } |
10 | /* | ||
11 | * FIXME: We should have a per UI backend way of showing progress, | ||
12 | * stdio will just show a percentage as NN%, etc. | ||
13 | */ | ||
14 | if (use_browser <= 0) | ||
15 | return; | ||
16 | 9 | ||
17 | if (total == 0) | 10 | static struct ui_progress default_progress_fns = |
18 | return; | 11 | { |
12 | .update = nop_progress_update, | ||
13 | }; | ||
19 | 14 | ||
20 | ui__refresh_dimensions(true); | 15 | struct ui_progress *progress_fns = &default_progress_fns; |
21 | pthread_mutex_lock(&ui__lock); | 16 | |
22 | y = SLtt_Screen_Rows / 2 - 2; | 17 | void ui_progress__update(u64 curr, u64 total, const char *title) |
23 | SLsmg_set_color(0); | 18 | { |
24 | SLsmg_draw_box(y, 0, 3, SLtt_Screen_Cols); | 19 | return progress_fns->update(curr, total, title); |
25 | SLsmg_gotorc(y++, 1); | 20 | } |
26 | SLsmg_write_string((char *)title); | 21 | |
27 | SLsmg_set_color(HE_COLORSET_SELECTED); | 22 | void ui_progress__finish(void) |
28 | bar = ((SLtt_Screen_Cols - 2) * curr) / total; | 23 | { |
29 | SLsmg_fill_region(y, 1, 1, bar, ' '); | 24 | if (progress_fns->finish) |
30 | SLsmg_refresh(); | 25 | progress_fns->finish(); |
31 | pthread_mutex_unlock(&ui__lock); | ||
32 | } | 26 | } |