https://git.reactos.org/?p=reactos.git;a=commitdiff;h=25004bb5b424960358fda…
commit 25004bb5b424960358fda4ba9d8438246c0bef9e
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Sun Jul 8 02:24:30 2018 +0200
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Sun Jul 8 15:39:50 2018 +0200
[WIN32K:NTUSER] Remove the hackish code that has been introduced in
IntSendChildNCPaint() in r73532 (6d7fcc4b) to attempt to pseudo-fix CORE-12071 and
CORE-12085 while breaking other stuff, amongst which CORE-14763 is one of the latest
manifestations, and re-enable the correct original code.
This fixes painting hangs under diverse situations, while CORE-12071 and
CORE-12085 remain fixed.
---
win32ss/user/ntuser/painting.c | 42 ++++++++++--------------------------------
1 file changed, 10 insertions(+), 32 deletions(-)
diff --git a/win32ss/user/ntuser/painting.c b/win32ss/user/ntuser/painting.c
index 5b4d04ff20..6a8b2a9bf7 100644
--- a/win32ss/user/ntuser/painting.c
+++ b/win32ss/user/ntuser/painting.c
@@ -366,38 +366,16 @@ IntSendNCPaint(PWND pWnd, HRGN hRgn)
VOID FASTCALL
IntSendChildNCPaint(PWND pWnd)
{
- PWND Child;
- HWND *List, *phWnd;
-
- List = IntWinListChildren(UserGetDesktopWindow());
- if ( List )
- {
- for (phWnd = List; *phWnd; ++phWnd)
- {
- Child = ValidateHwndNoErr(*phWnd);
- if ( Child && Child->hrgnUpdate == NULL && Child->state
& WNDS_SENDNCPAINT)
- {
- USER_REFERENCE_ENTRY Ref;
- UserRefObjectCo(Child, &Ref);
- IntSendNCPaint(Child, HRGN_WINDOW);
- UserDerefObjectCo(Child);
- }
- }
- ExFreePoolWithTag(List, USERTAG_WINDOWLIST);
- }
-/* FIXME : Use snap shot mode until window death is fixed while surfing menus! Fix
CORE-12085 and CORE-12071.
- pWnd = pWnd->spwndChild;
- while(pWnd)
- {
- if (pWnd->hrgnUpdate == NULL && pWnd->state & WNDS_SENDNCPAINT)
- {
- USER_REFERENCE_ENTRY Ref;
- UserRefObjectCo(pWnd, &Ref);
- IntSendNCPaint(pWnd, HRGN_WINDOW);
- UserDerefObjectCo(pWnd);
- }
- pWnd = pWnd->spwndNext;
- }*/
+ for (pWnd = pWnd->spwndChild; pWnd; pWnd = pWnd->spwndNext)
+ {
+ if ((pWnd->hrgnUpdate == NULL) && (pWnd->state &
WNDS_SENDNCPAINT))
+ {
+ USER_REFERENCE_ENTRY Ref;
+ UserRefObjectCo(pWnd, &Ref);
+ IntSendNCPaint(pWnd, HRGN_WINDOW);
+ UserDerefObjectCo(pWnd);
+ }
+ }
}
/*