Index: uspace/app/top/top.c
===================================================================
--- uspace/app/top/top.c	(revision 22a8a9bf03a2a9e9757a181a62a427d71aae2fa5)
+++ uspace/app/top/top.c	(revision d517c5b09f2aaa367548023397373507f68be923)
@@ -367,43 +367,35 @@
 	printf("Reading initial data...\n");
 	
-	if ((ret = read_data(&data_prev)) != NULL)
+	if ((ret = read_data(&data)) != NULL)
 		goto out;
 	
 	/* Compute some rubbish to have initialised values */
-	compute_percentages(&data_prev, &data_prev);
+	compute_percentages(&data, &data);
 	
 	/* And paint screen until death */
 	while (true) {
 		int c = tgetchar(UPDATE_INTERVAL);
-		if (c < 0) {
-			if ((ret = read_data(&data)) != NULL) {
-				free_data(&data);
-				goto out;
-			}
-			
-			compute_percentages(&data_prev, &data);
-			sort_data(&data);
-			print_data(&data);
-			free_data(&data_prev);
-			data_prev = data;
-			
-			continue;
-		}
-		
+
 		switch (c) {
+			case -1: /* timeout */
+				data_prev = data;
+				if ((ret = read_data(&data)) != NULL) {
+					free_data(&data_prev);
+					goto out;
+				}
+				
+				compute_percentages(&data_prev, &data);
+				free_data(&data_prev);
+				break;
 			case 't':
-				print_warning("Showing task statistics");
 				op_mode = OP_TASKS;
 				break;
 			case 'i':
-				print_warning("Showing IPC statistics");
 				op_mode = OP_IPC;
 				break;
 			case 'e':
-				print_warning("Showing exception statistics");
 				op_mode = OP_EXCS;
 				break;
 			case 'h':
-				print_warning("Showing help");
 				op_mode = OP_HELP;
 				break;
@@ -419,13 +411,17 @@
 					break;
 				}
+				/* fallthrough */
 			default:
 				print_warning("Unknown command \"%c\", use \"h\" for help", c);
-				break;
+				continue; /* don't redraw */
 		}
+
+		sort_data(&data);
+		print_data(&data);
 	}
 	
 out:
 	screen_done();
-	free_data(&data_prev);
+	free_data(&data);
 	
 	if (ret != NULL) {
