From e04aee24d33074878e09ee4634abacf35a0cefcb Mon Sep 17 00:00:00 2001 From: Ycros Date: Sat, 23 Jul 2011 02:25:54 +1000 Subject: [PATCH] Win32: Fix for mangled output on the terminal on exit. --- main.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index 0c7b8445..7a9d64a0 100644 --- a/main.c +++ b/main.c @@ -993,13 +993,31 @@ static void workio_cmd_free(struct workio_cmd *wc) static void disable_curses(void) { if (test_and_clear(&curses_active)) { +#ifdef WIN32 + leaveok(logwin, false); + leaveok(statuswin, false); + leaveok(mainwin, false); +#endif nocbreak(); echo(); delwin(logwin); delwin(statuswin); delwin(mainwin); 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 } }