Browse Source

Win32: Fix for mangled output on the terminal on exit.

Ycros 14 years ago
parent
commit
e04aee24d3
1 changed files with 19 additions and 1 deletions
  1. 19 1
      main.c

+ 19 - 1
main.c

@@ -993,13 +993,31 @@ static void workio_cmd_free(struct workio_cmd *wc)
 static void disable_curses(void)
 static void disable_curses(void)
 {
 {
 	if (test_and_clear(&curses_active)) {
 	if (test_and_clear(&curses_active)) {
+#ifdef WIN32
+		leaveok(logwin, false);
+		leaveok(statuswin, false);
+		leaveok(mainwin, false);
+#endif
 		nocbreak();
 		nocbreak();
 		echo();
 		echo();
 		delwin(logwin);
 		delwin(logwin);
 		delwin(statuswin);
 		delwin(statuswin);
 		delwin(mainwin);
 		delwin(mainwin);
 		endwin();
 		endwin();
-		refresh();
+		refresh();		
+		
+#ifdef WIN32
+		// Move the cursor to after curses output.
+		HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
+		CONSOLE_SCREEN_BUFFER_INFO csbi;
+		COORD coord;
+		
+		if (GetConsoleScreenBufferInfo(hout, &csbi)) {
+			coord.X = 0;
+			coord.Y = csbi.dwSize.Y - 1;
+			SetConsoleCursorPosition(hout, coord);
+		}
+#endif
 	}
 	}
 }
 }