mirror of
https://github.com/reactos/reactos.git
synced 2025-07-06 18:11:24 +00:00
[WIN32K]
- Fix ExtCreateRegion implementation CORE-4600 #comment Fixed in r59143. Thanks Giannis for the hint. #resolve svn path=/trunk/; revision=59143
This commit is contained in:
parent
e7ffaab876
commit
91e26dba9d
1 changed files with 10 additions and 9 deletions
|
@ -3599,6 +3599,8 @@ NtGdiExtCreateRegion(
|
||||||
DWORD nCount = 0;
|
DWORD nCount = 0;
|
||||||
DWORD iType = 0;
|
DWORD iType = 0;
|
||||||
DWORD dwSize = 0;
|
DWORD dwSize = 0;
|
||||||
|
UINT i;
|
||||||
|
RECT* rects;
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
MATRIX matrix;
|
MATRIX matrix;
|
||||||
XFORMOBJ xo;
|
XFORMOBJ xo;
|
||||||
|
@ -3610,6 +3612,7 @@ NtGdiExtCreateRegion(
|
||||||
nCount = RgnData->rdh.nCount;
|
nCount = RgnData->rdh.nCount;
|
||||||
iType = RgnData->rdh.iType;
|
iType = RgnData->rdh.iType;
|
||||||
dwSize = RgnData->rdh.dwSize;
|
dwSize = RgnData->rdh.dwSize;
|
||||||
|
rects = (RECT*)RgnData->Buffer;
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
|
@ -3641,6 +3644,11 @@ NtGdiExtCreateRegion(
|
||||||
|
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
|
/* Insert the rectangles one by one */
|
||||||
|
for(i=0; i<nCount; i++)
|
||||||
|
{
|
||||||
|
REGION_UnionRectWithRgn(Region, &rects[i]);
|
||||||
|
}
|
||||||
if (Xform)
|
if (Xform)
|
||||||
{
|
{
|
||||||
ULONG ret;
|
ULONG ret;
|
||||||
|
@ -3656,21 +3664,14 @@ NtGdiExtCreateRegion(
|
||||||
/* Apply the coordinate transformation on the rects */
|
/* Apply the coordinate transformation on the rects */
|
||||||
if (XFORMOBJ_bApplyXform(&xo,
|
if (XFORMOBJ_bApplyXform(&xo,
|
||||||
XF_LTOL,
|
XF_LTOL,
|
||||||
nCount * 2,
|
Region->rdh.nCount * 2,
|
||||||
RgnData->Buffer,
|
Region->Buffer,
|
||||||
Region->Buffer))
|
Region->Buffer))
|
||||||
{
|
{
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Copy rect coordinates */
|
|
||||||
RtlCopyMemory(Region->Buffer,
|
|
||||||
RgnData->Buffer,
|
|
||||||
nCount * sizeof(RECT));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue