]> nv-tegra.nvidia Code Review - linux-3.10.git/blob - tools/perf/ui/tui/progress.c
Merge branch 'tip/perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt...
[linux-3.10.git] / tools / perf / ui / tui / progress.c
1 #include "../cache.h"
2 #include "../progress.h"
3 #include "../libslang.h"
4 #include "../ui.h"
5 #include "../browser.h"
6
7 static void tui_progress__update(u64 curr, u64 total, const char *title)
8 {
9         int bar, y;
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
17         if (total == 0)
18                 return;
19
20         ui__refresh_dimensions(true);
21         pthread_mutex_lock(&ui__lock);
22         y = SLtt_Screen_Rows / 2 - 2;
23         SLsmg_set_color(0);
24         SLsmg_draw_box(y, 0, 3, SLtt_Screen_Cols);
25         SLsmg_gotorc(y++, 1);
26         SLsmg_write_string((char *)title);
27         SLsmg_set_color(HE_COLORSET_SELECTED);
28         bar = ((SLtt_Screen_Cols - 2) * curr) / total;
29         SLsmg_fill_region(y, 1, 1, bar, ' ');
30         SLsmg_refresh();
31         pthread_mutex_unlock(&ui__lock);
32 }
33
34 static struct ui_progress tui_progress_fns =
35 {
36         .update         = tui_progress__update,
37 };
38
39 void ui_progress__init(void)
40 {
41         progress_fns = &tui_progress_fns;
42 }