https://git.reactos.org/?p=reactos.git;a=commitdiff;h=28e277b65f236393cc84e3a8795a9e9e0846b811

commit 28e277b65f236393cc84e3a8795a9e9e0846b811
Author:     Bișoc George <[email protected]>
AuthorDate: Thu Apr 9 19:06:00 2020 +0200
Commit:     GitHub <[email protected]>
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;
         }

Reply via email to