diff options
Diffstat (limited to 'tools/perf/builtin-top.c')
| -rw-r--r-- | tools/perf/builtin-top.c | 13 | 
1 files changed, 10 insertions, 3 deletions
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index 8f80df89603..dd162aa24ba 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -89,8 +89,6 @@ void get_term_dimensions(struct winsize *ws)  static void perf_top__update_print_entries(struct perf_top *top)  { -	top->print_entries = top->winsize.ws_row; -  	if (top->print_entries > 9)  		top->print_entries -= 9;  } @@ -100,6 +98,13 @@ static void perf_top__sig_winch(int sig __used, siginfo_t *info __used, void *ar  	struct perf_top *top = arg;  	get_term_dimensions(&top->winsize); +	if (!top->print_entries +	    || (top->print_entries+4) > top->winsize.ws_row) { +		top->print_entries = top->winsize.ws_row; +	} else { +		top->print_entries += 4; +		top->winsize.ws_row = top->print_entries; +	}  	perf_top__update_print_entries(top);  } @@ -453,8 +458,10 @@ static void perf_top__handle_keypress(struct perf_top *top, int c)  				};  				perf_top__sig_winch(SIGWINCH, NULL, top);  				sigaction(SIGWINCH, &act, NULL); -			} else +			} else { +				perf_top__sig_winch(SIGWINCH, NULL, top);  				signal(SIGWINCH, SIG_DFL); +			}  			break;  		case 'E':  			if (top->evlist->nr_entries > 1) {  |