https://git.reactos.org/?p=reactos.git;a=commitdiff;h=28e277b65f236393cc84e3...
commit 28e277b65f236393cc84e3a8795a9e9e0846b811 Author: Bișoc George fraizeraust99@gmail.com AuthorDate: Thu Apr 9 19:06:00 2020 +0200 Commit: GitHub noreply@github.com CommitDate: Thu Apr 9 19:06:00 2020 +0200
[MSGINA] Redraw only the animation bar scroll (#2518)
Invalidating and updating the whole window is a waste of computation resources and may cause certain controls notably the text string control to flicker. So instead, just invalidate the specific portion of the client area which is the animation bar. --- dll/win32/msgina/gui.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/dll/win32/msgina/gui.c b/dll/win32/msgina/gui.c index e9cba9580ea..6301a19d955 100644 --- a/dll/win32/msgina/gui.c +++ b/dll/win32/msgina/gui.c @@ -36,6 +36,7 @@ typedef struct _DLG_DATA PGINA_CONTEXT pgContext; HBITMAP hLogoBitmap; HBITMAP hBarBitmap; + HWND hWndBarCtrl; DWORD BarCounter; DWORD LogoWidth; DWORD LogoHeight; @@ -197,6 +198,9 @@ StatusDialogProc( { ERR("SetTimer(IDT_BAR) failed: %d\n", GetLastError()); } + + /* Get the animation bar control */ + pDlgData->hWndBarCtrl = GetDlgItem(hwndDlg, IDC_BAR); } return TRUE; } @@ -210,8 +214,8 @@ StatusDialogProc( * We can divide 413 by 7 without remainder */ pDlgData->BarCounter = (pDlgData->BarCounter + 7) % pDlgData->BarWidth; - InvalidateRect(hwndDlg, NULL, FALSE); - UpdateWindow(hwndDlg); + InvalidateRect(pDlgData->hWndBarCtrl, NULL, FALSE); + UpdateWindow(pDlgData->hWndBarCtrl); } return TRUE; }