Re: [PATCH 5/7] perf top: Delay UI browser setup after initialization is done

Arnaldo Carvalho de Melo
2015-12-10T17:43:37Z

Em Thu, Dec 10, 2015 at 12:00:57PM +0900, Namhyung Kim escreveu:
> Move setup_browser after all necessary initialization is done. This
> is to remove the browser dependency from usage_with_options() and
> friends.

So, please try:

perf top -C 0 -p 1

So that we get a command line validation error that will cause cmd_top
to trip this:

status = target__validate(target);
if (status) {
target__strerror(target, status, errbuf, BUFSIZ);
ui__warning("%s\n", errbuf);
}

ui__warning() will emit the warning to stdio, and this message will be
seen only after the user exits the tool:

[root@ssdandy ~]# perf top -C 0 -p 1
Warning:
PID/TID switch overriding CPU

Where without this patch the user will be warning with a popup window,
that has to be acknowledged with an enter before proceeding.

Looking at the other patches to check which can be processed now,
leaving this one for later.

- Arnaldo

> Cc: Josh Poimboeuf <jpoimboe@redhat.com>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
> tools/perf/builtin-top.c | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
> index 7e2e72e6d9d1..75134e106a62 100644
> --- a/tools/perf/builtin-top.c
> +++ b/tools/perf/builtin-top.c
> @@ -1252,13 +1252,6 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
> goto out_delete_evlist;
> }
>
> - if (top.use_stdio)
> - use_browser = 0;
> - else if (top.use_tui)
> - use_browser = 1;
> -
> - setup_browser(false);
> -
> status = target__validate(target);
> if (status) {
> target__strerror(target, status, errbuf, BUFSIZ);
> @@ -1326,6 +1319,13 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
> sigaction(SIGWINCH, &act, NULL);
> }
>
> + if (top.use_stdio)
> + use_browser = 0;
> + else if (top.use_tui)
> + use_browser = 1;
> +
> + setup_browser(false);
> +
> status = __cmd_top(&top);
>
> out_delete_evlist:
> --
> 2.6.2