diff options
Diffstat (limited to 'tools/perf/util/ui/browser.c')
-rw-r--r-- | tools/perf/util/ui/browser.c | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/tools/perf/util/ui/browser.c b/tools/perf/util/ui/browser.c index 66f2d583d8c4..d237410c973b 100644 --- a/tools/perf/util/ui/browser.c +++ b/tools/perf/util/ui/browser.c | |||
@@ -1,16 +1,6 @@ | |||
1 | #define _GNU_SOURCE | ||
2 | #include <stdio.h> | ||
3 | #undef _GNU_SOURCE | ||
4 | /* | ||
5 | * slang versions <= 2.0.6 have a "#if HAVE_LONG_LONG" that breaks | ||
6 | * the build if it isn't defined. Use the equivalent one that glibc | ||
7 | * has on features.h. | ||
8 | */ | ||
9 | #include <features.h> | ||
10 | #ifndef HAVE_LONG_LONG | ||
11 | #define HAVE_LONG_LONG __GLIBC_HAVE_LONG_LONG | ||
12 | #endif | ||
13 | #include <slang.h> | 1 | #include <slang.h> |
2 | #include "libslang.h" | ||
3 | #include <linux/compiler.h> | ||
14 | #include <linux/list.h> | 4 | #include <linux/list.h> |
15 | #include <linux/rbtree.h> | 5 | #include <linux/rbtree.h> |
16 | #include <stdlib.h> | 6 | #include <stdlib.h> |
@@ -19,17 +9,11 @@ | |||
19 | #include "helpline.h" | 9 | #include "helpline.h" |
20 | #include "../color.h" | 10 | #include "../color.h" |
21 | #include "../util.h" | 11 | #include "../util.h" |
22 | 12 | #include <stdio.h> | |
23 | #if SLANG_VERSION < 20104 | ||
24 | #define sltt_set_color(obj, name, fg, bg) \ | ||
25 | SLtt_set_color(obj,(char *)name, (char *)fg, (char *)bg) | ||
26 | #else | ||
27 | #define sltt_set_color SLtt_set_color | ||
28 | #endif | ||
29 | 13 | ||
30 | newtComponent newt_form__new(void); | 14 | newtComponent newt_form__new(void); |
31 | 15 | ||
32 | int ui_browser__percent_color(double percent, bool current) | 16 | static int ui_browser__percent_color(double percent, bool current) |
33 | { | 17 | { |
34 | if (current) | 18 | if (current) |
35 | return HE_COLORSET_SELECTED; | 19 | return HE_COLORSET_SELECTED; |
@@ -40,6 +24,23 @@ int ui_browser__percent_color(double percent, bool current) | |||
40 | return HE_COLORSET_NORMAL; | 24 | return HE_COLORSET_NORMAL; |
41 | } | 25 | } |
42 | 26 | ||
27 | void ui_browser__set_color(struct ui_browser *self __used, int color) | ||
28 | { | ||
29 | SLsmg_set_color(color); | ||
30 | } | ||
31 | |||
32 | void ui_browser__set_percent_color(struct ui_browser *self, | ||
33 | double percent, bool current) | ||
34 | { | ||
35 | int color = ui_browser__percent_color(percent, current); | ||
36 | ui_browser__set_color(self, color); | ||
37 | } | ||
38 | |||
39 | void ui_browser__gotorc(struct ui_browser *self, int y, int x) | ||
40 | { | ||
41 | SLsmg_gotorc(self->y + y, self->x + x); | ||
42 | } | ||
43 | |||
43 | void ui_browser__list_head_seek(struct ui_browser *self, off_t offset, int whence) | 44 | void ui_browser__list_head_seek(struct ui_browser *self, off_t offset, int whence) |
44 | { | 45 | { |
45 | struct list_head *head = self->entries; | 46 | struct list_head *head = self->entries; |
@@ -111,7 +112,7 @@ unsigned int ui_browser__rb_tree_refresh(struct ui_browser *self) | |||
111 | nd = self->top; | 112 | nd = self->top; |
112 | 113 | ||
113 | while (nd != NULL) { | 114 | while (nd != NULL) { |
114 | SLsmg_gotorc(self->y + row, self->x); | 115 | ui_browser__gotorc(self, row, 0); |
115 | self->write(self, nd, row); | 116 | self->write(self, nd, row); |
116 | if (++row == self->height) | 117 | if (++row == self->height) |
117 | break; | 118 | break; |
@@ -196,7 +197,7 @@ int ui_browser__refresh(struct ui_browser *self) | |||
196 | 197 | ||
197 | newtScrollbarSet(self->sb, self->index, self->nr_entries - 1); | 198 | newtScrollbarSet(self->sb, self->index, self->nr_entries - 1); |
198 | row = self->refresh(self); | 199 | row = self->refresh(self); |
199 | SLsmg_set_color(HE_COLORSET_NORMAL); | 200 | ui_browser__set_color(self, HE_COLORSET_NORMAL); |
200 | SLsmg_fill_region(self->y + row, self->x, | 201 | SLsmg_fill_region(self->y + row, self->x, |
201 | self->height - row, self->width, ' '); | 202 | self->height - row, self->width, ' '); |
202 | 203 | ||
@@ -294,7 +295,7 @@ unsigned int ui_browser__list_head_refresh(struct ui_browser *self) | |||
294 | pos = self->top; | 295 | pos = self->top; |
295 | 296 | ||
296 | list_for_each_from(pos, head) { | 297 | list_for_each_from(pos, head) { |
297 | SLsmg_gotorc(self->y + row, self->x); | 298 | ui_browser__gotorc(self, row, 0); |
298 | self->write(self, pos, row); | 299 | self->write(self, pos, row); |
299 | if (++row == self->height) | 300 | if (++row == self->height) |
300 | break; | 301 | break; |