diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index aad58643102eda7cf48b6c5b28a20e9ecfd8e782..50ec01eb7f57e2326e6d633b4e26710a9dfba2df 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -577,6 +577,12 @@ static void perf_top__sort_new_samples(void *arg) perf_top__reset_sample_counters(t); } +static void stop_top(void) +{ + session_done = 1; + done = 1; +} + static void *display_thread_tui(void *arg) { struct perf_evsel *pos; @@ -613,13 +619,13 @@ static void *display_thread_tui(void *arg) !top->record_opts.overwrite, &top->annotation_opts); - done = 1; + stop_top(); return NULL; } static void display_sig(int sig __maybe_unused) { - done = 1; + stop_top(); } static void display_setup_sig(void) @@ -672,7 +678,7 @@ static void *display_thread(void *arg) if (perf_top__handle_keypress(top, c)) goto repeat; - done = 1; + stop_top(); } }