From patchwork Wed Dec 2 12:51:33 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wang Nan X-Patchwork-Id: 57560 Delivered-To: patch@linaro.org Received: by 10.112.155.196 with SMTP id vy4csp2853750lbb; Wed, 2 Dec 2015 04:52:01 -0800 (PST) X-Received: by 10.67.5.69 with SMTP id ck5mr4275574pad.125.1449060721128; Wed, 02 Dec 2015 04:52:01 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y17si4598245pfa.33.2015.12.02.04.52.00; Wed, 02 Dec 2015 04:52:01 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757488AbbLBMv7 (ORCPT + 28 others); Wed, 2 Dec 2015 07:51:59 -0500 Received: from szxga03-in.huawei.com ([119.145.14.66]:49382 "EHLO szxga03-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756444AbbLBMv6 (ORCPT ); Wed, 2 Dec 2015 07:51:58 -0500 Received: from 172.24.1.51 (EHLO SZXEML423-HUB.china.huawei.com) ([172.24.1.51]) by szxrg03-dlp.huawei.com (MOS 4.4.3-GA FastPath queued) with ESMTP id BRZ07627; Wed, 02 Dec 2015 20:51:46 +0800 (CST) Received: from linux-4hy3.site (10.107.193.248) by SZXEML423-HUB.china.huawei.com (10.82.67.154) with Microsoft SMTP Server id 14.3.235.1; Wed, 2 Dec 2015 20:51:38 +0800 From: Wang Nan To: , CC: , , , Wang Nan , Arnaldo Carvalho de Melo Subject: [PATCH 2/2] perf hists browser: Reset selection when refresh Date: Wed, 2 Dec 2015 12:51:33 +0000 Message-ID: <1449060693-236232-2-git-send-email-wangnan0@huawei.com> X-Mailer: git-send-email 1.8.3.4 In-Reply-To: <1449060693-236232-1-git-send-email-wangnan0@huawei.com> References: <1449060693-236232-1-git-send-email-wangnan0@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.107.193.248] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020204.565EE963.00A5, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2013-05-26 15:14:31, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 7875e1f6a4353e6fbfb346e7fcd9f45c Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 Cc: Arnaldo Carvalho de Melo Cc: Namhyung Kim --- 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(-) -- 1.8.3.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ 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);