Browse Source

Fix console rewind on win32 by using native api.

pull/112/head
FireMartZ 6 years ago
parent
commit
22354542c5
  1. 18
      src/metrics.cpp

18
src/metrics.cpp

@ -429,7 +429,9 @@ void ThreadShowMetricsScreen()
if (isScreen) {
// Clear screen
#ifndef WIN32
std::cout << "\e[2J";
#endif
// Thank you text
std::cout << _("Thank you for running a HUSH node!") << std::endl;
@ -464,7 +466,16 @@ void ThreadShowMetricsScreen()
if (isScreen) {
// Erase below current position
#ifndef WIN32
std::cout << "\e[J";
#else
DWORD count;
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
COORD homeCoords = { 0, csbi.dwCursorPosition.Y };
FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE), (TCHAR) ' ', csbi.dwSize.X * (csbi.dwSize.Y-csbi.dwCursorPosition.Y), homeCoords, &count);
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), homeCoords);
#endif
}
// Miner status
@ -498,7 +509,14 @@ void ThreadShowMetricsScreen()
if (isScreen) {
// Return to the top of the updating section
#ifndef WIN32
std::cout << "\e[" << lines << "A";
#else
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
COORD homeCoords = { 0, csbi.dwCursorPosition.Y - lines };
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), homeCoords);
#endif
}
}
}

Loading…
Cancel
Save