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/eng... ============================================================================== --- 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/inc... ============================================================================== --- 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/inc... ============================================================================== --- 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/ntu... ============================================================================== --- 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/ntu... ============================================================================== --- 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/ntu... ============================================================================== --- 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/obj... ============================================================================== --- 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/obj... ============================================================================== --- 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/obj... ============================================================================== --- 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/obj... ============================================================================== --- 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/obj... ============================================================================== --- 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; }