Messages in this thread Patch in this message | | | From | Wang Nan <> | Subject | [PATCH 2/2] perf hists browser: Reset selection when refresh | Date | Wed, 2 Dec 2015 12:51:33 +0000 |
| |
With following steps:
Step 1: perf report
Step 2: Use UP/DOWN to select an entry, don't press 'ENTER'
Step 3: Use '/' to filter symbols, use a filter which returns empty result
Step 4: Press 'ENTER'
We see that, even if we have filter all symbols (and the main interface is empty), pressing 'ENTER' still select one symbol. This behavior surprise user. This patch resets browser->selection in hist_browser__refresh() and let it choose default selection. In this case browser->selection keeps NULL so user won't see annotation item in menu.
Signed-off-by: Wang Nan <wangnan0@huawei.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> ---
Note that if this patch is applied before 1/2 then the steps listed in commit message in 1/2 won't trigger segfault. However I believe patch 1/1 is still required.
--- tools/perf/ui/browsers/hists.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index 9458da8..523a9ef 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c @@ -1192,6 +1192,7 @@ static unsigned int hist_browser__refresh(struct ui_browser *browser) } ui_browser__hists_init_top(browser); + hb->selection = NULL; for (nd = browser->top; nd; nd = rb_next(nd)) { struct hist_entry *h = rb_entry(nd, struct hist_entry, rb_node); @@ -2102,7 +2103,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events, if (browser->he_selection != NULL) { thread = hist_browser__selected_thread(browser); - map = browser->selection->map; + map = browser->selection ? browser->selection->map : NULL; socked_id = browser->he_selection->socket; } switch (key) { @@ -2321,7 +2322,8 @@ skip_annotation: nr_options += add_script_opt(browser, &actions[nr_options], &options[nr_options], - NULL, browser->selection->sym); + NULL, browser->selection ? + browser->selection->sym : NULL); } nr_options += add_script_opt(browser, &actions[nr_options], &options[nr_options], NULL, NULL); -- 1.8.3.4
| |