mirror of
https://github.com/reactos/reactos.git
synced 2024-06-29 01:12:06 +00:00
[Win32SS]
- Implement Exclude Update Region, for testing. See CORE-12649. svn path=/trunk/; revision=73888
This commit is contained in:
parent
482d43b875
commit
81652fd827
|
@ -2063,7 +2063,7 @@ NTAPI
|
|||
NtUserEvent(
|
||||
DWORD Unknown0);
|
||||
|
||||
DWORD
|
||||
INT
|
||||
NTAPI
|
||||
NtUserExcludeUpdateRgn(
|
||||
HDC hDC,
|
||||
|
@ -2470,7 +2470,7 @@ NtUserGetUpdateRect(
|
|||
LPRECT lpRect,
|
||||
BOOL fErase);
|
||||
|
||||
int
|
||||
INT
|
||||
NTAPI
|
||||
NtUserGetUpdateRgn(
|
||||
HWND hWnd,
|
||||
|
|
|
@ -104,17 +104,6 @@ NtUserEvent(
|
|||
return 0;
|
||||
}
|
||||
|
||||
DWORD
|
||||
APIENTRY
|
||||
NtUserExcludeUpdateRgn(
|
||||
HDC hDC,
|
||||
HWND hWnd)
|
||||
{
|
||||
STUB
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL
|
||||
APIENTRY
|
||||
NtUserGetAltTabInfo(
|
||||
|
|
|
@ -2473,6 +2473,81 @@ NtUserDrawCaption(HWND hWnd,
|
|||
return NtUserDrawCaptionTemp(hWnd, hDC, lpRc, 0, 0, NULL, uFlags);
|
||||
}
|
||||
|
||||
INT FASTCALL
|
||||
co_UserExcludeUpdateRgn(HDC hDC, PWND Window)
|
||||
{
|
||||
POINT pt;
|
||||
RECT rc;
|
||||
|
||||
if (Window->hrgnUpdate)
|
||||
{
|
||||
if (Window->hrgnUpdate == HRGN_WINDOW)
|
||||
{
|
||||
return NtGdiIntersectClipRect(hDC, 0, 0, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
INT ret = ERROR;
|
||||
HRGN hrgn = NtGdiCreateRectRgn(0,0,0,0);
|
||||
|
||||
if ( hrgn && GreGetDCPoint( hDC, GdiGetDCOrg, &pt) )
|
||||
{
|
||||
if ( NtGdiGetRandomRgn( hDC, hrgn, CLIPRGN) == NULLREGION )
|
||||
{
|
||||
NtGdiOffsetRgn(hrgn, pt.x, pt.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
HRGN hrgnScreen;
|
||||
PMONITOR pm = UserGetPrimaryMonitor();
|
||||
hrgnScreen = NtGdiCreateRectRgn(0,0,0,0);
|
||||
NtGdiCombineRgn(hrgnScreen, hrgnScreen, pm->hrgnMonitor, RGN_OR);
|
||||
|
||||
NtGdiCombineRgn(hrgn, hrgnScreen, NULL, RGN_COPY);
|
||||
|
||||
GreDeleteObject(hrgnScreen);
|
||||
}
|
||||
|
||||
NtGdiCombineRgn(hrgn, hrgn, Window->hrgnUpdate, RGN_DIFF);
|
||||
|
||||
NtGdiOffsetRgn(hrgn, -pt.x, -pt.y);
|
||||
|
||||
ret = NtGdiExtSelectClipRgn(hDC, hrgn, RGN_COPY);
|
||||
|
||||
GreDeleteObject(hrgn);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return GdiGetClipBox( hDC, &rc);
|
||||
}
|
||||
}
|
||||
|
||||
INT
|
||||
APIENTRY
|
||||
NtUserExcludeUpdateRgn(
|
||||
HDC hDC,
|
||||
HWND hWnd)
|
||||
{
|
||||
INT ret = ERROR;
|
||||
PWND pWnd;
|
||||
|
||||
TRACE("Enter NtUserExcludeUpdateRgn\n");
|
||||
UserEnterExclusive();
|
||||
|
||||
pWnd = UserGetWindowObject(hWnd);
|
||||
|
||||
if (hDC && pWnd)
|
||||
ret = co_UserExcludeUpdateRgn(hDC, pWnd);
|
||||
|
||||
TRACE("Leave NtUserExcludeUpdateRgn, ret=%i\n", ret);
|
||||
|
||||
UserLeave();
|
||||
return ret;
|
||||
}
|
||||
|
||||
BOOL
|
||||
APIENTRY
|
||||
NtUserInvalidateRect(
|
||||
|
|
Loading…
Reference in a new issue