Author: jimtabor
Date: Tue Dec 29 22:07:04 2009
New Revision: 44806
URL:
http://svn.reactos.org/svn/reactos?rev=44806&view=rev
Log:
[Win32k]
- Setting up for region attribute support.
- Removed old code and use GreDeleteObject for dc and region types.
Modified:
trunk/reactos/subsystems/win32/win32k/eng/engwindow.c
trunk/reactos/subsystems/win32/win32k/include/dc.h
trunk/reactos/subsystems/win32/win32k/include/region.h
trunk/reactos/subsystems/win32/win32k/ntuser/painting.c
trunk/reactos/subsystems/win32/win32k/ntuser/window.c
trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c
trunk/reactos/subsystems/win32/win32k/objects/cliprgn.c
trunk/reactos/subsystems/win32/win32k/objects/dclife.c
trunk/reactos/subsystems/win32/win32k/objects/dcstate.c
trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c
trunk/reactos/subsystems/win32/win32k/objects/region.c
Modified: trunk/reactos/subsystems/win32/win32k/eng/engwindow.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/en…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/eng/engwindow.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/eng/engwindow.c [iso-8859-1] Tue Dec 29 22:07:04
2009
@@ -89,7 +89,7 @@
if (hVisRgn != NULL)
{
NtGdiOffsetRgn(hVisRgn, Window->Wnd->rcClient.left,
Window->Wnd->rcClient.top);
- visRgn = REGION_LockRgn(hVisRgn);
+ visRgn = RGNOBJAPI_Lock(hVisRgn, NULL);
if (visRgn != NULL)
{
if (visRgn->rdh.nCount > 0)
@@ -110,7 +110,7 @@
}
}
}
- REGION_UnlockRgn(visRgn);
+ RGNOBJAPI_Unlock(visRgn);
}
else
{
Modified: trunk/reactos/subsystems/win32/win32k/include/dc.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/dc.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/dc.h [iso-8859-1] Tue Dec 29 22:07:04
2009
@@ -144,7 +144,6 @@
HDC FASTCALL DC_AllocDC(PUNICODE_STRING Driver);
VOID FASTCALL DC_InitDC(HDC DCToInit);
HDC FASTCALL DC_FindOpenDC(PUNICODE_STRING Driver);
-VOID FASTCALL DC_FreeDC(HDC);
VOID FASTCALL DC_AllocateDcAttr(HDC);
VOID FASTCALL DC_FreeDcAttr(HDC);
BOOL INTERNAL_CALL DC_Cleanup(PVOID ObjectBody);
Modified: trunk/reactos/subsystems/win32/win32k/include/region.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/in…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/region.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/region.h [iso-8859-1] Tue Dec 29
22:07:04 2009
@@ -48,6 +48,8 @@
INT FASTCALL IntGdiCombineRgn(PROSRGNDATA, PROSRGNDATA, PROSRGNDATA, INT);
INT FASTCALL REGION_Complexity(PROSRGNDATA);
PROSRGNDATA FASTCALL IntGdiCreateRectRgn(INT, INT, INT, INT);
+PROSRGNDATA FASTCALL RGNOBJAPI_Lock(HRGN,PRGN_ATTR *);
+VOID FASTCALL RGNOBJAPI_Unlock(PROSRGNDATA);
#define UnsafeIntCreateRectRgnIndirect(prc) \
NtGdiCreateRectRgn((prc)->left, (prc)->top, (prc)->right, (prc)->bottom)
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/painting.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/painting.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/painting.c [iso-8859-1] Tue Dec 29
22:07:04 2009
@@ -1006,10 +1006,10 @@
}
else
{
- RgnData = REGION_LockRgn(Window->UpdateRegion);
+ RgnData = RGNOBJAPI_Lock(Window->UpdateRegion, NULL);
ASSERT(RgnData != NULL);
RegionType = REGION_GetRgnBox(RgnData, &Rect);
- REGION_UnlockRgn(RgnData);
+ RGNOBJAPI_Unlock(RgnData);
if (RegionType != ERROR && RegionType != NULLREGION)
RECTL_bIntersectRect(&Rect, &Rect,
&Window->Wnd->rcClient);
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/window.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] Tue Dec 29 22:07:04
2009
@@ -4557,10 +4557,10 @@
/* Copy the region into hRgn */
NtGdiCombineRgn(hRgn, VisRgn, NULL, RGN_COPY);
- if((pRgn = REGION_LockRgn(hRgn)))
+ if((pRgn = RGNOBJAPI_Lock(hRgn, NULL)))
{
Ret = pRgn->rdh.iType;
- REGION_UnlockRgn(pRgn);
+ RGNOBJAPI_Unlock(pRgn);
}
else
Ret = ERROR;
@@ -4596,11 +4596,11 @@
if(Window->WindowRegion && !(Wnd->style & WS_MINIMIZE))
NtGdiCombineRgn(VisRgn, VisRgn, Window->WindowRegion, RGN_AND);
- if((pRgn = REGION_LockRgn(VisRgn)))
+ if((pRgn = RGNOBJAPI_Lock(VisRgn, NULL)))
{
Ret = pRgn->rdh.iType;
*Rect = pRgn->rdh.rcBound;
- REGION_UnlockRgn(pRgn);
+ RGNOBJAPI_Unlock(pRgn);
}
else
Ret = ERROR;
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/winpos.c [iso-8859-1] Tue Dec 29 22:07:04
2009
@@ -953,16 +953,16 @@
VisBefore = VIS_ComputeVisibleRegion(Window, FALSE, FALSE, TRUE);
VisRgn = NULL;
- if (VisBefore != NULL && (VisRgn =
(PROSRGNDATA)REGION_LockRgn(VisBefore)) &&
+ if (VisBefore != NULL && (VisRgn =
(PROSRGNDATA)RGNOBJAPI_Lock(VisBefore, NULL)) &&
REGION_GetRgnBox(VisRgn, &TempRect) == NULLREGION)
{
- REGION_UnlockRgn(VisRgn);
+ RGNOBJAPI_Unlock(VisRgn);
GreDeleteObject(VisBefore);
VisBefore = NULL;
}
else if(VisRgn)
{
- REGION_UnlockRgn(VisRgn);
+ RGNOBJAPI_Unlock(VisRgn);
NtGdiOffsetRgn(VisBefore, -Window->Wnd->rcWindow.left,
-Window->Wnd->rcWindow.top);
}
}
@@ -1112,16 +1112,16 @@
VisAfter = VIS_ComputeVisibleRegion(Window, FALSE, FALSE, TRUE);
VisRgn = NULL;
- if (VisAfter != NULL && (VisRgn = (PROSRGNDATA)REGION_LockRgn(VisAfter))
&&
+ if (VisAfter != NULL && (VisRgn = (PROSRGNDATA)RGNOBJAPI_Lock(VisAfter,
NULL)) &&
REGION_GetRgnBox(VisRgn, &TempRect) == NULLREGION)
{
- REGION_UnlockRgn(VisRgn);
+ RGNOBJAPI_Unlock(VisRgn);
GreDeleteObject(VisAfter);
VisAfter = NULL;
}
else if(VisRgn)
{
- REGION_UnlockRgn(VisRgn);
+ RGNOBJAPI_Unlock(VisRgn);
NtGdiOffsetRgn(VisAfter, -Window->Wnd->rcWindow.left,
-Window->Wnd->rcWindow.top);
}
@@ -1156,9 +1156,9 @@
RECTL_vOffsetRect(&ORect, - OldWindowRect.left, - OldWindowRect.top);
RECTL_vOffsetRect(&NRect, - NewWindowRect.left, - NewWindowRect.top);
RECTL_bIntersectRect(&CopyRect, &ORect, &NRect);
- pCopyRgn = REGION_LockRgn(CopyRgn);
+ pCopyRgn = RGNOBJAPI_Lock(CopyRgn, NULL);
REGION_CropAndOffsetRegion(pCopyRgn, pCopyRgn, &CopyRect, NULL);
- REGION_UnlockRgn(pCopyRgn);
+ RGNOBJAPI_Unlock(pCopyRgn);
}
/* No use in copying bits which are in the update region. */
@@ -1174,11 +1174,11 @@
* there's nothing to copy. Also, it's no use copying bits onto
* themselves.
*/
- if ((VisRgn = (PROSRGNDATA)REGION_LockRgn(CopyRgn)) &&
+ if ((VisRgn = (PROSRGNDATA)RGNOBJAPI_Lock(CopyRgn, NULL)) &&
REGION_GetRgnBox(VisRgn, &CopyRect) == NULLREGION)
{
/* Nothing to copy, clean up */
- REGION_UnlockRgn(VisRgn);
+ RGNOBJAPI_Unlock(VisRgn);
GreDeleteObject(CopyRgn);
CopyRgn = NULL;
}
@@ -1187,7 +1187,7 @@
{
if(VisRgn)
{
- REGION_UnlockRgn(VisRgn);
+ RGNOBJAPI_Unlock(VisRgn);
}
/*
@@ -1214,7 +1214,7 @@
}
else if(VisRgn)
{
- REGION_UnlockRgn(VisRgn);
+ RGNOBJAPI_Unlock(VisRgn);
}
}
else
Modified: trunk/reactos/subsystems/win32/win32k/objects/cliprgn.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/cliprgn.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/cliprgn.c [iso-8859-1] Tue Dec 29
22:07:04 2009
@@ -36,7 +36,7 @@
NtGdiCombineRgn(Dc->rosdc.hGCClipRgn, Dc->rosdc.hClipRgn,
Dc->rosdc.hVisRgn, RGN_AND);
NtGdiOffsetRgn(Dc->rosdc.hGCClipRgn, Dc->ptlDCOrig.x, Dc->ptlDCOrig.y);
- if((CombinedRegion = REGION_LockRgn(Dc->rosdc.hGCClipRgn)))
+ if((CombinedRegion = RGNOBJAPI_Lock(Dc->rosdc.hGCClipRgn, NULL)))
{
if (Dc->rosdc.CombinedClip != NULL)
IntEngDeleteClipRegion(Dc->rosdc.CombinedClip);
@@ -46,7 +46,7 @@
CombinedRegion->Buffer,
&CombinedRegion->rdh.rcBound);
- REGION_UnlockRgn(CombinedRegion);
+ RGNOBJAPI_Unlock(CombinedRegion);
}
if ( NULL == Dc->rosdc.CombinedClip )
@@ -123,10 +123,10 @@
{
PROSRGNDATA Rgn;
RECTL rect;
- if((Rgn = REGION_LockRgn(dc->rosdc.hVisRgn)))
+ if((Rgn = RGNOBJAPI_Lock(dc->rosdc.hVisRgn, NULL)))
{
REGION_GetRgnBox(Rgn, &rect);
- REGION_UnlockRgn(Rgn);
+ RGNOBJAPI_Unlock(Rgn);
dc->rosdc.hClipRgn = UnsafeIntCreateRectRgnIndirect(&rect);
}
else
@@ -177,13 +177,13 @@
return ERROR;
}
- if (!(Rgn = REGION_LockRgn(dc->rosdc.hGCClipRgn)))
+ if (!(Rgn = RGNOBJAPI_Lock(dc->rosdc.hGCClipRgn, NULL)))
{
DC_UnlockDc(dc);
return ERROR;
}
retval = REGION_GetRgnBox(Rgn, rc);
- REGION_UnlockRgn(Rgn);
+ RGNOBJAPI_Unlock(Rgn);
IntDPtoLP(dc, (LPPOINT)rc, 2);
DC_UnlockDc(dc);
@@ -407,11 +407,11 @@
if (dc->rosdc.hGCClipRgn)
{
- if((Rgn = (PROSRGNDATA)REGION_LockRgn(dc->rosdc.hGCClipRgn)))
+ if((Rgn = (PROSRGNDATA)RGNOBJAPI_Lock(dc->rosdc.hGCClipRgn, NULL)))
{
IntLPtoDP(dc, (LPPOINT)&Rect, 2);
Result = REGION_RectInRegion(Rgn, &Rect);
- REGION_UnlockRgn(Rgn);
+ RGNOBJAPI_Unlock(Rgn);
}
}
DC_UnlockDc(dc);
Modified: trunk/reactos/subsystems/win32/win32k/objects/dclife.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/dclife.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/dclife.c [iso-8859-1] Tue Dec 29
22:07:04 2009
@@ -133,23 +133,6 @@
NewDC->dclevel.pSurface = SURFACE_ShareLockSurface(hsurf);
return NewDC;
-}
-
-VOID FASTCALL
-DC_FreeDC(HDC DCToFree)
-{
- DC_FreeDcAttr(DCToFree);
- if (!IsObjectDead(DCToFree))
- {
- if (!GDIOBJ_FreeObjByHandle(DCToFree, GDI_OBJECT_TYPE_DC))
- {
- DPRINT1("DC_FreeDC failed\n");
- }
- }
- else
- {
- DPRINT1("Attempted to Delete 0x%x currently being
destroyed!!!\n",DCToFree);
- }
}
BOOL INTERNAL_CALL
@@ -537,7 +520,7 @@
PATH_Delete(DCToDelete->dclevel.hPath);
DC_UnlockDc(DCToDelete);
- DC_FreeDC(hDC);
+ GreDeleteObject(hDC);
return TRUE;
}
Modified: trunk/reactos/subsystems/win32/win32k/objects/dcstate.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/dcstate.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/dcstate.c [iso-8859-1] Tue Dec 29
22:07:04 2009
@@ -180,7 +180,7 @@
}
/* Delete the saved dc */
- DC_FreeDC(hdcSave);
+ GreDeleteObject(hdcSave);
}
DC_UnlockDc(pdc);
Modified: trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c [iso-8859-1] Tue Dec 29
22:07:04 2009
@@ -663,11 +663,34 @@
FASTCALL
GreDeleteObject(HGDIOBJ hObject)
{
+ INT Index;
+ PGDI_TABLE_ENTRY Entry;
+ DWORD dwObjectType;
+ PVOID pAttr = NULL;
+
DPRINT("NtGdiDeleteObject handle 0x%08x\n", hObject);
if (!IsObjectDead(hObject))
{
- return NULL != hObject
- ? GDIOBJ_FreeObjByHandle(hObject, GDI_OBJECT_TYPE_DONTCARE) : FALSE;
+ dwObjectType = GDIOBJ_GetObjectType(hObject);
+
+ Index = GDI_HANDLE_GET_INDEX(hObject);
+ Entry = &GdiHandleTable->Entries[Index];
+ pAttr = Entry->UserData;
+
+ switch (dwObjectType)
+ {
+// case GDI_OBJECT_TYPE_BRUSH:
+ case GDI_OBJECT_TYPE_REGION:
+ if (pAttr) FreeObjectAttr(pAttr);
+ break;
+
+ case GDI_OBJECT_TYPE_DC:
+ DC_FreeDcAttr(hObject);
+ break;
+ }
+
+ return NULL != hObject
+ ? GDIOBJ_FreeObjByHandle(hObject, dwObjectType) : FALSE;
}
else
{
Modified: trunk/reactos/subsystems/win32/win32k/objects/region.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/region.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/region.c [iso-8859-1] Tue Dec 29
22:07:04 2009
@@ -467,7 +467,7 @@
{
ROSRGNDATA *Data;
- Data = REGION_LockRgn(hRgn);
+ Data = RGNOBJAPI_Lock(hRgn, NULL);
if (Data == NULL)
{
DbgPrint("IntDumpRegion called with invalid region!\n");
@@ -482,7 +482,7 @@
Data->rdh.rcBound.bottom,
Data->rdh.iType);
- REGION_UnlockRgn(Data);
+ RGNOBJAPI_Unlock(Data);
}
#endif /* not NDEBUG */
@@ -1739,7 +1739,7 @@
trb = REGION_AllocRgnWithHandle(srb->rdh.nCount + 1);
if (!trb)
{
- REGION_UnlockRgn(tra);
+ RGNOBJAPI_Unlock(tra);
GreDeleteObject(htra);
return;
}
@@ -1748,8 +1748,8 @@
REGION_SubtractRegion(tra, sra, srb);
REGION_SubtractRegion(trb, srb, sra);
REGION_UnionRegion(dr, tra, trb);
- REGION_UnlockRgn(tra);
- REGION_UnlockRgn(trb);
+ RGNOBJAPI_Unlock(tra);
+ RGNOBJAPI_Unlock(trb);
GreDeleteObject(htra);
GreDeleteObject(htrb);
@@ -1863,26 +1863,26 @@
PRECTL rc;
ULONG i;
- if (!(srcObj = REGION_LockRgn(hSrc)))
+ if (!(srcObj = RGNOBJAPI_Lock(hSrc, NULL)))
{
return FALSE;
}
if (!REGION_NOT_EMPTY(srcObj))
{
- REGION_UnlockRgn(srcObj);
+ RGNOBJAPI_Unlock(srcObj);
return FALSE;
}
- if (!(destObj = REGION_LockRgn(hDest)))
- {
- REGION_UnlockRgn(srcObj);
+ if (!(destObj = RGNOBJAPI_Lock(hDest, NULL)))
+ {
+ RGNOBJAPI_Unlock(srcObj);
return FALSE;
}
EMPTY_REGION(destObj);
if (!REGION_CopyRegion(destObj, srcObj))
{
- REGION_UnlockRgn(destObj);
- REGION_UnlockRgn(srcObj);
+ RGNOBJAPI_Unlock(destObj);
+ RGNOBJAPI_Unlock(srcObj);
return FALSE;
}
@@ -1891,8 +1891,8 @@
if (!REGION_CreateSimpleFrameRgn(destObj, x, y))
{
EMPTY_REGION(destObj);
- REGION_UnlockRgn(destObj);
- REGION_UnlockRgn(srcObj);
+ RGNOBJAPI_Unlock(destObj);
+ RGNOBJAPI_Unlock(srcObj);
return FALSE;
}
}
@@ -1951,8 +1951,8 @@
REGION_SubtractRegion(destObj, srcObj, destObj);
}
- REGION_UnlockRgn(destObj);
- REGION_UnlockRgn(srcObj);
+ RGNOBJAPI_Unlock(destObj);
+ RGNOBJAPI_Unlock(srcObj);
return TRUE;
}
@@ -1986,11 +1986,11 @@
goto done;
}
- if ( !(srcObj = REGION_LockRgn(hSrc)) )
+ if ( !(srcObj = RGNOBJAPI_Lock(hSrc, NULL)) )
goto done;
- if ( !(destObj = REGION_LockRgn(hDest)) )
- {
- REGION_UnlockRgn(srcObj);
+ if ( !(destObj = RGNOBJAPI_Lock(hDest, NULL)) )
+ {
+ RGNOBJAPI_Unlock(srcObj);
goto done;
}
EMPTY_REGION(destObj);
@@ -2021,8 +2021,8 @@
}
ret = TRUE;
- REGION_UnlockRgn(srcObj);
- REGION_UnlockRgn(destObj);
+ RGNOBJAPI_Unlock(srcObj);
+ RGNOBJAPI_Unlock(destObj);
done:
return ret;
@@ -2054,7 +2054,7 @@
pReg->Buffer = ExAllocatePoolWithTag(PagedPool, nReg * sizeof(RECT),
TAG_REGION);
if (!pReg->Buffer)
{
- REGION_UnlockRgn(pReg);
+ RGNOBJAPI_Unlock(pReg);
GDIOBJ_FreeObjByHandle(hReg, GDI_OBJECT_TYPE_REGION);
return NULL;
}
@@ -2264,17 +2264,21 @@
}
else if (src2Rgn == NULL)
{
- DPRINT1("IntGdiCombineRgn requires hSrc2 != NULL for combine mode
%d!\n", CombineMode);
- SetLastWin32Error(ERROR_INVALID_HANDLE);
+ DPRINT1("IntGdiCombineRgn requires hSrc2 != NULL for combine mode
%d!\n", CombineMode);
+ SetLastWin32Error(ERROR_INVALID_HANDLE);
}
}
+ }
+ else
+ {
+ DPRINT("IntGdiCombineRgn: hSrc1 unavailable\n");
+ SetLastWin32Error(ERROR_INVALID_HANDLE);
}
}
else
{
DPRINT("IntGdiCombineRgn: hDest unavailable\n");
SetLastWin32Error(ERROR_INVALID_HANDLE);
- result = ERROR;
}
return result;
}
@@ -2297,30 +2301,30 @@
return ERROR;
}
- destRgn = REGION_LockRgn(hDest);
+ destRgn = RGNOBJAPI_Lock(hDest, NULL);
if (!destRgn)
{
SetLastWin32Error(ERROR_INVALID_HANDLE);
return ERROR;
}
- src1Rgn = REGION_LockRgn(hSrc1);
+ src1Rgn = RGNOBJAPI_Lock(hSrc1, NULL);
if (!src1Rgn)
{
- REGION_UnlockRgn(destRgn);
+ RGNOBJAPI_Unlock(destRgn);
SetLastWin32Error(ERROR_INVALID_HANDLE);
return ERROR;
}
if (hSrc2)
- src2Rgn = REGION_LockRgn(hSrc2);
+ src2Rgn = RGNOBJAPI_Lock(hSrc2, NULL);
result = IntGdiCombineRgn( destRgn, src1Rgn, src2Rgn, CombineMode);
if (src2Rgn)
- REGION_UnlockRgn(src2Rgn);
- REGION_UnlockRgn(src1Rgn);
- REGION_UnlockRgn(destRgn);
+ RGNOBJAPI_Unlock(src2Rgn);
+ RGNOBJAPI_Unlock(src1Rgn);
+ RGNOBJAPI_Unlock(destRgn);
return result;
}
@@ -2347,7 +2351,7 @@
if (!(pRgn = REGION_AllocRgnWithHandle(1))) return NULL;
REGION_SetRectRgn(pRgn, LeftRect, TopRect, RightRect, BottomRect);
- REGION_UnlockRgn(pRgn);
+ RGNOBJAPI_Unlock(pRgn);
// Return pointer with Share locks.
pRgn = GDIOBJ_ShareLockObj(pRgn->BaseObject.hHmgr, GDI_OBJECT_TYPE_REGION);
@@ -2370,7 +2374,7 @@
hRgn = pRgn->BaseObject.hHmgr;
REGION_SetRectRgn(pRgn, LeftRect, TopRect, RightRect, BottomRect);
- REGION_UnlockRgn(pRgn);
+ RGNOBJAPI_Unlock(pRgn);
return hRgn;
}
@@ -2490,7 +2494,7 @@
REGION_UnionRectWithRgn(obj, &rect);
}
- REGION_UnlockRgn(obj);
+ RGNOBJAPI_Unlock(obj);
return hrgn;
}
@@ -2506,12 +2510,12 @@
ULONG i;
BOOL bRet = FALSE;
- if ( !(rgn1 = REGION_LockRgn(hSrcRgn1)) )
+ if ( !(rgn1 = RGNOBJAPI_Lock(hSrcRgn1, NULL)) )
return ERROR;
- if ( !(rgn2 = REGION_LockRgn(hSrcRgn2)) )
- {
- REGION_UnlockRgn(rgn1);
+ if ( !(rgn2 = RGNOBJAPI_Lock(hSrcRgn2, NULL)) )
+ {
+ RGNOBJAPI_Unlock(rgn1);
return ERROR;
}
@@ -2540,8 +2544,8 @@
bRet = TRUE;
exit:
- REGION_UnlockRgn(rgn1);
- REGION_UnlockRgn(rgn2);
+ RGNOBJAPI_Unlock(rgn1);
+ RGNOBJAPI_Unlock(rgn2);
return bRet;
}
@@ -2637,12 +2641,12 @@
if (!NT_SUCCESS(Status))
{
SetLastWin32Error(ERROR_INVALID_PARAMETER);
- REGION_UnlockRgn(Region);
+ RGNOBJAPI_Unlock(Region);
GreDeleteObject(hRgn);
return NULL;
}
- REGION_UnlockRgn(Region);
+ RGNOBJAPI_Unlock(Region);
return hRgn;
}
@@ -2659,14 +2663,14 @@
PROSRGNDATA rgn;
PRECTL r;
- if (NULL == (rgn = REGION_LockRgn(hRgn)))
+ if (NULL == (rgn = RGNOBJAPI_Lock(hRgn, NULL)))
{
return FALSE;
}
if (NULL == (oldhBrush = NtGdiSelectBrush(hDC, hBrush)))
{
- REGION_UnlockRgn(rgn);
+ RGNOBJAPI_Unlock(rgn);
return FALSE;
}
@@ -2675,7 +2679,7 @@
NtGdiPatBlt(hDC, r->left, r->top, r->right - r->left, r->bottom -
r->top, PATCOPY);
}
- REGION_UnlockRgn(rgn);
+ RGNOBJAPI_Unlock(rgn);
NtGdiSelectBrush(hDC, oldhBrush);
return TRUE;
@@ -2816,13 +2820,13 @@
PROSRGNDATA Rgn;
DWORD ret;
- if (!(Rgn = REGION_LockRgn(hRgn)))
+ if (!(Rgn = RGNOBJAPI_Lock(hRgn, NULL)))
{
return ERROR;
}
ret = REGION_GetRgnBox(Rgn, pRect);
- REGION_UnlockRgn(Rgn);
+ RGNOBJAPI_Unlock(Rgn);
return ret;
}
@@ -2839,13 +2843,13 @@
DWORD ret;
NTSTATUS Status = STATUS_SUCCESS;
- if (!(Rgn = REGION_LockRgn(hRgn)))
+ if (!(Rgn = RGNOBJAPI_Lock(hRgn, NULL)))
{
return ERROR;
}
ret = REGION_GetRgnBox(Rgn, &SafeRect);
- REGION_UnlockRgn(Rgn);
+ RGNOBJAPI_Unlock(Rgn);
if (ERROR == ret)
{
return ret;
@@ -2880,7 +2884,7 @@
ULONG i;
PRECTL rc;
- if (!(RgnData = REGION_LockRgn(hRgn)))
+ if (!(RgnData = RGNOBJAPI_Lock(hRgn, NULL)))
{
SetLastWin32Error(ERROR_INVALID_HANDLE);
return FALSE;
@@ -2892,13 +2896,13 @@
if (!NtGdiPatBlt(hDC, rc->left, rc->top, rc->right - rc->left,
rc->bottom - rc->top, DSTINVERT))
{
- REGION_UnlockRgn(RgnData);
+ RGNOBJAPI_Unlock(RgnData);
return FALSE;
}
rc++;
}
- REGION_UnlockRgn(RgnData);
+ RGNOBJAPI_Unlock(RgnData);
return TRUE;
}
@@ -2910,7 +2914,7 @@
INT YOffset
)
{
- PROSRGNDATA rgn = REGION_LockRgn(hRgn);
+ PROSRGNDATA rgn = RGNOBJAPI_Lock(hRgn, NULL);
INT ret;
DPRINT("NtGdiOffsetRgn: hRgn %d Xoffs %d Yoffs %d rgn %x\n", hRgn, XOffset,
YOffset, rgn );
@@ -2946,7 +2950,7 @@
}
}
ret = REGION_Complexity(rgn);
- REGION_UnlockRgn(rgn);
+ RGNOBJAPI_Unlock(rgn);
return ret;
}
@@ -2982,7 +2986,7 @@
NtGdiCombineRgn(tmpVisRgn, tmpVisRgn, dc->rosdc.hGCClipRgn, RGN_AND);
- visrgn = REGION_LockRgn(tmpVisRgn);
+ visrgn = RGNOBJAPI_Lock(tmpVisRgn, NULL);
if (visrgn == NULL)
{
GreDeleteObject(tmpVisRgn);
@@ -3005,7 +3009,7 @@
&BrushOrigin,
0xFFFF);//FIXME:don't know what to put here
- REGION_UnlockRgn(visrgn);
+ RGNOBJAPI_Unlock(visrgn);
GreDeleteObject(tmpVisRgn);
// Fill the region
@@ -3024,7 +3028,7 @@
ULONG i;
PRECTL r;
- if (!(rgn = REGION_LockRgn(hRgn) ) )
+ if (!(rgn = RGNOBJAPI_Lock(hRgn, NULL) ) )
return FALSE;
if (rgn->rdh.nCount > 0 && INRECT(rgn->rdh.rcBound, X, Y))
@@ -3034,13 +3038,13 @@
{
if (INRECT(*r, X, Y))
{
- REGION_UnlockRgn(rgn);
+ RGNOBJAPI_Unlock(rgn);
return TRUE;
}
r++;
}
}
- REGION_UnlockRgn(rgn);
+ RGNOBJAPI_Unlock(rgn);
return FALSE;
}
@@ -3108,7 +3112,7 @@
BOOL Ret;
NTSTATUS Status = STATUS_SUCCESS;
- if (!(Rgn = REGION_LockRgn(hRgn)))
+ if (!(Rgn = RGNOBJAPI_Lock(hRgn, NULL)))
{
return ERROR;
}
@@ -3126,14 +3130,14 @@
if (!NT_SUCCESS(Status))
{
- REGION_UnlockRgn(Rgn);
+ RGNOBJAPI_Unlock(Rgn);
SetLastNtError(Status);
DPRINT1("NtGdiRectInRegion: bogus rc\n");
return ERROR;
}
Ret = REGION_RectInRegion(Rgn, &rc);
- REGION_UnlockRgn(Rgn);
+ RGNOBJAPI_Unlock(Rgn);
return Ret;
}
@@ -3189,14 +3193,14 @@
{
PROSRGNDATA rgn;
- if ( !(rgn = REGION_LockRgn(hRgn)) )
+ if ( !(rgn = RGNOBJAPI_Lock(hRgn, NULL)) )
{
return 0; //per documentation
}
REGION_SetRectRgn(rgn, LeftRect, TopRect, RightRect, BottomRect);
- REGION_UnlockRgn(rgn);
+ RGNOBJAPI_Unlock(rgn);
return TRUE;
}
@@ -3210,7 +3214,7 @@
PROSRGNDATA Rgn;
NTSTATUS Status = STATUS_SUCCESS;
- if (!(Rgn = REGION_LockRgn(hDest)))
+ if (!(Rgn = RGNOBJAPI_Lock(hDest, NULL)))
{
SetLastWin32Error(ERROR_INVALID_HANDLE);
return NULL;
@@ -3229,13 +3233,13 @@
if (! NT_SUCCESS(Status))
{
- REGION_UnlockRgn(Rgn);
+ RGNOBJAPI_Unlock(Rgn);
SetLastNtError(Status);
return NULL;
}
REGION_UnionRectWithRgn(Rgn, &SafeRect);
- REGION_UnlockRgn(Rgn);
+ RGNOBJAPI_Unlock(Rgn);
return hDest;
}
@@ -3257,7 +3261,7 @@
)
{
DWORD size;
- PROSRGNDATA obj = REGION_LockRgn(hrgn);
+ PROSRGNDATA obj = RGNOBJAPI_Lock(hrgn, NULL);
NTSTATUS Status = STATUS_SUCCESS;
if (!obj)
@@ -3266,7 +3270,7 @@
size = obj->rdh.nCount * sizeof(RECT);
if (count < (size + sizeof(RGNDATAHEADER)) || rgndata == NULL)
{
- REGION_UnlockRgn(obj);
+ RGNOBJAPI_Unlock(obj);
if (rgndata) /* buffer is too small, signal it by return 0 */
return 0;
else /* user requested buffer size with rgndata NULL */
@@ -3288,11 +3292,11 @@
if (!NT_SUCCESS(Status))
{
SetLastNtError(Status);
- REGION_UnlockRgn(obj);
+ RGNOBJAPI_Unlock(obj);
return 0;
}
- REGION_UnlockRgn(obj);
+ RGNOBJAPI_Unlock(obj);
return size + sizeof(RGNDATAHEADER);
}
@@ -3778,7 +3782,7 @@
(Pts[2].x == Pts[3].x) &&
(Pts[3].y == Pts[0].y))))
{
- REGION_UnlockRgn(region);
+ RGNOBJAPI_Unlock(region);
NtGdiSetRectRgn(hrgn, min(Pts[0].x, Pts[2].x), min(Pts[0].y, Pts[2].y),
max(Pts[0].x, Pts[2].x), max(Pts[0].y, Pts[2].y));
return hrgn;
@@ -3927,7 +3931,7 @@
curPtBlock = tmpPtBlock;
}
ExFreePoolWithTag(pETEs, TAG_REGION);
- REGION_UnlockRgn(region);
+ RGNOBJAPI_Unlock(region);
return hrgn;
}