From acd3148c1a52dfa1eb870d074d9071bbf2b67f26 Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Tue, 21 Feb 2023 09:14:26 +0900 Subject: [PATCH] [USETUP] Speed up CONSOLE_SetStatusTextXV +17% (#5086) Get more speed by omitting erasing and overwriting whole line. CORE-18838 --- base/setup/usetup/consup.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/base/setup/usetup/consup.c b/base/setup/usetup/consup.c index 15e0fa69d99..9c3c799e63f 100644 --- a/base/setup/usetup/consup.c +++ b/base/setup/usetup/consup.c @@ -429,32 +429,26 @@ CONSOLE_SetStatusTextXV( IN LPCSTR fmt, IN va_list args) { + INT nLength; COORD coPos; DWORD Written; CHAR Buffer[128]; - vsprintf(Buffer, fmt, args); + memset(Buffer, ' ', min(sizeof(Buffer), xScreen)); + nLength = vsprintf(&Buffer[x], fmt, args); + ASSERT(x + nLength < sizeof(Buffer)); + Buffer[x + nLength] = ' '; coPos.X = 0; coPos.Y = yScreen - 1; - FillConsoleOutputAttribute(StdOutput, BACKGROUND_WHITE, xScreen, coPos, &Written); - - FillConsoleOutputCharacterA(StdOutput, - ' ', - xScreen, - coPos, - &Written); - - coPos.X = x; - WriteConsoleOutputCharacterA(StdOutput, Buffer, - (ULONG)strlen(Buffer), + min(sizeof(Buffer), xScreen), coPos, &Written); }