From: Hermès Bélusca-Maïto Date: Sun, 8 Jul 2018 00:24:30 +0000 (+0200) Subject: [WIN32K:NTUSER] Remove the hackish code that has been introduced in IntSendChildNCPai... X-Git-Tag: 0.4.11-dev~307 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=25004bb5b424960358fda4ba9d8438246c0bef9e [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. --- diff --git a/win32ss/user/ntuser/painting.c b/win32ss/user/ntuser/painting.c index 5b4d04ff204..6a8b2a9bf73 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); + } + } } /*