forked from luck/tmp_suning_uos_patched
perf report/top: Allow pressing hotkeys in the options popup menu
When the users presses ENTER in the main 'perf report/top' screen a popup menu is presented, in it some hotkeys are suggested as alternatives to using the menu, or for additional features. At that point the user may try those hotkeys, so allow for that by recording the key used and exiting, the caller then can check for that possibility and process the hotkey. I.e. try pressing ENTER, and then 'k' to exit and zoom into the kernel map, using ESC then zooms out, etc. Reviewed-by: Jiri Olsa <jolsa@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jin Yao <yao.jin@linux.intel.com> Cc: Kan Liang <kan.liang@intel.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Namhyung Kim <namhyung@kernel.org> Link: https://lkml.kernel.org/n/tip-ujfq3fw44kf6qrtfajl5dcsp@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
d07126560c
commit
4c8b9c0f42
|
@ -2995,12 +2995,13 @@ static int perf_evsel__hists_browse(struct evsel *evsel, int nr_events,
|
||||||
while (1) {
|
while (1) {
|
||||||
struct thread *thread = NULL;
|
struct thread *thread = NULL;
|
||||||
struct map *map = NULL;
|
struct map *map = NULL;
|
||||||
int choice = 0;
|
int choice;
|
||||||
int socked_id = -1;
|
int socked_id = -1;
|
||||||
|
|
||||||
nr_options = 0;
|
key = 0; // reset key
|
||||||
|
do_hotkey: // key came straight from options ui__popup_menu()
|
||||||
key = hist_browser__run(browser, helpline, warn_lost_event, 0);
|
choice = nr_options = 0;
|
||||||
|
key = hist_browser__run(browser, helpline, warn_lost_event, key);
|
||||||
|
|
||||||
if (browser->he_selection != NULL) {
|
if (browser->he_selection != NULL) {
|
||||||
thread = hist_browser__selected_thread(browser);
|
thread = hist_browser__selected_thread(browser);
|
||||||
|
@ -3279,10 +3280,13 @@ static int perf_evsel__hists_browse(struct evsel *evsel, int nr_events,
|
||||||
do {
|
do {
|
||||||
struct popup_action *act;
|
struct popup_action *act;
|
||||||
|
|
||||||
choice = ui__popup_menu(nr_options, options, NULL);
|
choice = ui__popup_menu(nr_options, options, &key);
|
||||||
if (choice == -1 || choice >= nr_options)
|
if (choice == -1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
if (choice == nr_options)
|
||||||
|
goto do_hotkey;
|
||||||
|
|
||||||
act = &actions[choice];
|
act = &actions[choice];
|
||||||
key = act->fn(browser, act);
|
key = act->fn(browser, act);
|
||||||
} while (key == 1);
|
} while (key == 1);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user