Patch by Rafał Harabień :
- Create a new region covering the full desktop in UserRedrawDesktop instead of using Window->hrgnUpdate. Fixes "IntGdiCombineRgn requires hSrc2  != NULL" messages and redrawing issues on mode change.
See issue #5949 for more details.

svn path=/trunk/; revision=50881
This commit is contained in:
Timo Kreuzer 2011-02-23 19:10:42 +00:00
parent b0e397de26
commit ab7f1c1255
2 changed files with 8 additions and 4 deletions

View file

@ -616,15 +616,19 @@ VOID APIENTRY
UserRedrawDesktop() UserRedrawDesktop()
{ {
PWND Window = NULL; PWND Window = NULL;
HRGN hRgn;
Window = UserGetDesktopWindow(); Window = UserGetDesktopWindow();
hRgn = IntSysCreateRectRgnIndirect(&Window->rcWindow);
IntInvalidateWindows( Window, IntInvalidateWindows( Window,
Window->hrgnUpdate, hRgn,
RDW_FRAME | RDW_FRAME |
RDW_ERASE | RDW_ERASE |
RDW_INVALIDATE | RDW_INVALIDATE |
RDW_ALLCHILDREN); RDW_ALLCHILDREN);
REGION_FreeRgnByHandle(hRgn);
} }

View file

@ -307,9 +307,9 @@ co_IntPaintWindows(PWND Wnd, ULONG Flags, BOOL Recurse)
/* /*
* IntInvalidateWindows * IntInvalidateWindows
* *
* Internal function used by IntRedrawWindow. * Internal function used by IntRedrawWindow, UserRedrawDesktop,
* co_WinPosSetWindowPos, IntValidateParent, co_UserRedrawWindow.
*/ */
VOID FASTCALL VOID FASTCALL
IntInvalidateWindows(PWND Wnd, HRGN hRgn, ULONG Flags) IntInvalidateWindows(PWND Wnd, HRGN hRgn, ULONG Flags)
{ {