diff options
Diffstat (limited to 'tools/perf/util/ui/browsers/annotate.c')
| -rw-r--r-- | tools/perf/util/ui/browsers/annotate.c | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/tools/perf/util/ui/browsers/annotate.c b/tools/perf/util/ui/browsers/annotate.c index a90273e63f4..82b78f99251 100644 --- a/tools/perf/util/ui/browsers/annotate.c +++ b/tools/perf/util/ui/browsers/annotate.c | |||
| @@ -40,14 +40,12 @@ static void annotate_browser__write(struct ui_browser *self, void *entry, int ro | |||
| 40 | 40 | ||
| 41 | if (ol->offset != -1) { | 41 | if (ol->offset != -1) { |
| 42 | struct objdump_line_rb_node *olrb = objdump_line__rb(ol); | 42 | struct objdump_line_rb_node *olrb = objdump_line__rb(ol); |
| 43 | int color = ui_browser__percent_color(olrb->percent, current_entry); | 43 | ui_browser__set_percent_color(self, olrb->percent, current_entry); |
| 44 | SLsmg_set_color(color); | ||
| 45 | slsmg_printf(" %7.2f ", olrb->percent); | 44 | slsmg_printf(" %7.2f ", olrb->percent); |
| 46 | if (!current_entry) | 45 | if (!current_entry) |
| 47 | SLsmg_set_color(HE_COLORSET_CODE); | 46 | ui_browser__set_color(self, HE_COLORSET_CODE); |
| 48 | } else { | 47 | } else { |
| 49 | int color = ui_browser__percent_color(0, current_entry); | 48 | ui_browser__set_percent_color(self, 0, current_entry); |
| 50 | SLsmg_set_color(color); | ||
| 51 | slsmg_write_nstring(" ", 9); | 49 | slsmg_write_nstring(" ", 9); |
| 52 | } | 50 | } |
| 53 | 51 | ||
| @@ -135,32 +133,31 @@ static void annotate_browser__set_top(struct annotate_browser *self, | |||
| 135 | self->curr_hot = nd; | 133 | self->curr_hot = nd; |
| 136 | } | 134 | } |
| 137 | 135 | ||
| 138 | static int annotate_browser__run(struct annotate_browser *self, | 136 | static int annotate_browser__run(struct annotate_browser *self) |
| 139 | struct newtExitStruct *es) | ||
| 140 | { | 137 | { |
| 141 | struct rb_node *nd; | 138 | struct rb_node *nd; |
| 142 | struct hist_entry *he = self->b.priv; | 139 | struct hist_entry *he = self->b.priv; |
| 140 | int key; | ||
| 143 | 141 | ||
| 144 | if (ui_browser__show(&self->b, he->ms.sym->name, | 142 | if (ui_browser__show(&self->b, he->ms.sym->name, |
| 145 | "<- or ESC: exit, TAB/shift+TAB: cycle thru samples") < 0) | 143 | "<-, -> or ESC: exit, TAB/shift+TAB: cycle thru samples") < 0) |
| 146 | return -1; | 144 | return -1; |
| 147 | 145 | /* | |
| 148 | newtFormAddHotKey(self->b.form, NEWT_KEY_LEFT); | 146 | * To allow builtin-annotate to cycle thru multiple symbols by |
| 149 | newtFormAddHotKey(self->b.form, NEWT_KEY_RIGHT); | 147 | * examining the exit key for this function. |
| 148 | */ | ||
| 149 | ui_browser__add_exit_key(&self->b, NEWT_KEY_RIGHT); | ||
| 150 | 150 | ||
| 151 | nd = self->curr_hot; | 151 | nd = self->curr_hot; |
| 152 | if (nd) { | 152 | if (nd) { |
| 153 | newtFormAddHotKey(self->b.form, NEWT_KEY_TAB); | 153 | int tabs[] = { NEWT_KEY_TAB, NEWT_KEY_UNTAB, 0 }; |
| 154 | newtFormAddHotKey(self->b.form, NEWT_KEY_UNTAB); | 154 | ui_browser__add_exit_keys(&self->b, tabs); |
| 155 | } | 155 | } |
| 156 | 156 | ||
| 157 | while (1) { | 157 | while (1) { |
| 158 | ui_browser__run(&self->b, es); | 158 | key = ui_browser__run(&self->b); |
| 159 | |||
| 160 | if (es->reason != NEWT_EXIT_HOTKEY) | ||
| 161 | break; | ||
| 162 | 159 | ||
| 163 | switch (es->u.key) { | 160 | switch (key) { |
| 164 | case NEWT_KEY_TAB: | 161 | case NEWT_KEY_TAB: |
| 165 | nd = rb_prev(nd); | 162 | nd = rb_prev(nd); |
| 166 | if (nd == NULL) | 163 | if (nd == NULL) |
| @@ -179,12 +176,11 @@ static int annotate_browser__run(struct annotate_browser *self, | |||
| 179 | } | 176 | } |
| 180 | out: | 177 | out: |
| 181 | ui_browser__hide(&self->b); | 178 | ui_browser__hide(&self->b); |
| 182 | return es->u.key; | 179 | return key; |
| 183 | } | 180 | } |
| 184 | 181 | ||
| 185 | int hist_entry__tui_annotate(struct hist_entry *self) | 182 | int hist_entry__tui_annotate(struct hist_entry *self) |
| 186 | { | 183 | { |
| 187 | struct newtExitStruct es; | ||
| 188 | struct objdump_line *pos, *n; | 184 | struct objdump_line *pos, *n; |
| 189 | struct objdump_line_rb_node *rbpos; | 185 | struct objdump_line_rb_node *rbpos; |
| 190 | LIST_HEAD(head); | 186 | LIST_HEAD(head); |
| @@ -232,7 +228,7 @@ int hist_entry__tui_annotate(struct hist_entry *self) | |||
| 232 | annotate_browser__set_top(&browser, browser.curr_hot); | 228 | annotate_browser__set_top(&browser, browser.curr_hot); |
| 233 | 229 | ||
| 234 | browser.b.width += 18; /* Percentage */ | 230 | browser.b.width += 18; /* Percentage */ |
| 235 | ret = annotate_browser__run(&browser, &es); | 231 | ret = annotate_browser__run(&browser); |
| 236 | list_for_each_entry_safe(pos, n, &head, node) { | 232 | list_for_each_entry_safe(pos, n, &head, node) { |
| 237 | list_del(&pos->node); | 233 | list_del(&pos->node); |
| 238 | objdump_line__free(pos); | 234 | objdump_line__free(pos); |
