diff --git a/reactos/subsystems/win32/win32k/include/desktop.h b/reactos/subsystems/win32/win32k/include/desktop.h index d585865bf94..81da0c6277c 100644 --- a/reactos/subsystems/win32/win32k/include/desktop.h +++ b/reactos/subsystems/win32/win32k/include/desktop.h @@ -117,6 +117,8 @@ IntParseDesktopPath(PEPROCESS Process, BOOL FASTCALL IntDesktopUpdatePerUserSettings(BOOL bEnable); +VOID APIENTRY UserRedrawDesktop(VOID); + BOOL IntRegisterShellHookWindow(HWND hWnd); BOOL IntDeRegisterShellHookWindow(HWND hWnd); diff --git a/reactos/subsystems/win32/win32k/ntddraw/dxeng.c b/reactos/subsystems/win32/win32k/ntddraw/dxeng.c index c3ca8121bfe..4c24fc017bd 100644 --- a/reactos/subsystems/win32/win32k/ntddraw/dxeng.c +++ b/reactos/subsystems/win32/win32k/ntddraw/dxeng.c @@ -627,10 +627,11 @@ BOOLEAN APIENTRY DxEngRedrawDesktop() { - /* FIXME add redraw code */ - UNIMPLEMENTED; + UserRedrawDesktop(); return TRUE; } + + ULONG gulVisRgnUniqueness; // Increase count everytime client region is updated. /************************************************************************/ diff --git a/reactos/subsystems/win32/win32k/ntuser/desktop.c b/reactos/subsystems/win32/win32k/ntuser/desktop.c index 15c964f039e..709d396747b 100644 --- a/reactos/subsystems/win32/win32k/ntuser/desktop.c +++ b/reactos/subsystems/win32/win32k/ntuser/desktop.c @@ -626,6 +626,25 @@ BOOL FASTCALL IntDesktopUpdatePerUserSettings(BOOL bEnable) /* PUBLIC FUNCTIONS ***********************************************************/ +VOID APIENTRY +UserRedrawDesktop() +{ + PWINDOW_OBJECT Window = NULL; + + UserEnterExclusive(); + + Window = UserGetDesktopWindow(); + + IntInvalidateWindows( Window, + Window->UpdateRegion, + RDW_FRAME | + RDW_ERASE | + RDW_INVALIDATE | + RDW_ALLCHILDREN); + UserLeave(); +} + + NTSTATUS FASTCALL co_IntShowDesktop(PDESKTOP_OBJECT Desktop, ULONG Width, ULONG Height) {