gdi32: Optionally return the type from GDI_GetObjPtr().

Huw Davies huw at codeweavers.com
Fri Jul 8 03:45:25 CDT 2016


This enables get_dc_obj() to check the type without calling GetObjectType()
and thus it saves additional calls to Enter/LeaveCriticalSection().

Signed-off-by: Huw Davies <huw at codeweavers.com>
---
This reduces the runtime of the dib tests by about 8% and achieves a similar
increase in performance with the drawing phase of a (gdi heavy) app I'm
looking at.

dlls/gdi32/bitmap.c        | 12 ++++++------
 dlls/gdi32/brush.c         |  8 ++++----
 dlls/gdi32/dc.c            |  5 +++--
 dlls/gdi32/dib.c           | 12 ++++++------
 dlls/gdi32/dibdrv/dc.c     |  2 +-
 dlls/gdi32/dibdrv/opengl.c |  2 +-
 dlls/gdi32/enhmetafile.c   |  2 +-
 dlls/gdi32/font.c          |  4 ++--
 dlls/gdi32/gdi_private.h   |  4 ++--
 dlls/gdi32/gdiobj.c        |  8 ++++++--
 dlls/gdi32/metafile.c      |  4 ++--
 dlls/gdi32/palette.c       | 16 ++++++++--------
 dlls/gdi32/pen.c           | 10 ++++++----
 dlls/gdi32/region.c        | 32 ++++++++++++++++----------------
 14 files changed, 64 insertions(+), 57 deletions(-)

diff --git a/dlls/gdi32/bitmap.c b/dlls/gdi32/bitmap.c
index 4b7a2ed..018a9bd 100644
--- a/dlls/gdi32/bitmap.c
+++ b/dlls/gdi32/bitmap.c
@@ -246,7 +246,7 @@ LONG WINAPI GetBitmapBits(
     struct gdi_image_bits src_bits;
     struct bitblt_coords src;
     int dst_stride, max, ret;
-    BITMAPOBJ *bmp = GDI_GetObjPtr( hbitmap, OBJ_BITMAP );
+    BITMAPOBJ *bmp = GDI_GetObjPtr( hbitmap, OBJ_BITMAP, NULL );
 
     if (!bmp) return 0;
 
@@ -321,7 +321,7 @@ LONG WINAPI SetBitmapBits(
 
     if (!bits) return 0;
 
-    bmp = GDI_GetObjPtr( hbitmap, OBJ_BITMAP );
+    bmp = GDI_GetObjPtr( hbitmap, OBJ_BITMAP, NULL );
     if (!bmp) return 0;
 
     if (count < 0) {
@@ -430,7 +430,7 @@ static HGDIOBJ BITMAP_SelectObject( HGDIOBJ handle, HDC hdc )
     ret = dc->hBitmap;
     if (handle == dc->hBitmap) goto done;  /* nothing to do */
 
-    if (!(bitmap = GDI_GetObjPtr( handle, OBJ_BITMAP )))
+    if (!(bitmap = GDI_GetObjPtr( handle, OBJ_BITMAP, NULL )))
     {
         ret = 0;
         goto done;
@@ -499,7 +499,7 @@ static BOOL BITMAP_DeleteObject( HGDIOBJ handle )
 static INT BITMAP_GetObject( HGDIOBJ handle, INT count, LPVOID buffer )
 {
     INT ret = 0;
-    BITMAPOBJ *bmp = GDI_GetObjPtr( handle, OBJ_BITMAP );
+    BITMAPOBJ *bmp = GDI_GetObjPtr( handle, OBJ_BITMAP, NULL );
 
     if (!bmp) return 0;
 
@@ -547,7 +547,7 @@ BOOL WINAPI GetBitmapDimensionEx(
     HBITMAP hbitmap, /* [in]  Handle to bitmap */
     LPSIZE size)     /* [out] Address of struct receiving dimensions */
 {
-    BITMAPOBJ * bmp = GDI_GetObjPtr( hbitmap, OBJ_BITMAP );
+    BITMAPOBJ * bmp = GDI_GetObjPtr( hbitmap, OBJ_BITMAP, NULL );
     if (!bmp) return FALSE;
     *size = bmp->size;
     GDI_ReleaseObj( hbitmap );
@@ -572,7 +572,7 @@ BOOL WINAPI SetBitmapDimensionEx(
     INT y,           /* [in]  Bitmap height */
     LPSIZE prevSize) /* [out] Address of structure for orig dims */
 {
-    BITMAPOBJ * bmp = GDI_GetObjPtr( hbitmap, OBJ_BITMAP );
+    BITMAPOBJ * bmp = GDI_GetObjPtr( hbitmap, OBJ_BITMAP, NULL );
     if (!bmp) return FALSE;
     if (prevSize) *prevSize = bmp->size;
     bmp->size.cx = x;
diff --git a/dlls/gdi32/brush.c b/dlls/gdi32/brush.c
index 4f0c17d..a70433f 100644
--- a/dlls/gdi32/brush.c
+++ b/dlls/gdi32/brush.c
@@ -60,7 +60,7 @@ static BOOL copy_bitmap( struct brush_pattern *brush, HBITMAP bitmap )
     BITMAPINFO *info = (BITMAPINFO *)buffer;
     struct gdi_image_bits bits;
     struct bitblt_coords src;
-    BITMAPOBJ *bmp = GDI_GetObjPtr( bitmap, OBJ_BITMAP );
+    BITMAPOBJ *bmp = GDI_GetObjPtr( bitmap, OBJ_BITMAP, NULL );
 
     if (!bmp) return FALSE;
 
@@ -155,7 +155,7 @@ BOOL get_brush_bitmap_info( HBRUSH handle, BITMAPINFO *info, void **bits, UINT *
     BRUSHOBJ *brush;
     BOOL ret = FALSE;
 
-    if (!(brush = GDI_GetObjPtr( handle, OBJ_BRUSH ))) return FALSE;
+    if (!(brush = GDI_GetObjPtr( handle, OBJ_BRUSH, NULL ))) return FALSE;
 
     if (brush->pattern.info)
     {
@@ -434,7 +434,7 @@ static HGDIOBJ BRUSH_SelectObject( HGDIOBJ handle, HDC hdc )
         return 0;
     }
 
-    if ((brush = GDI_GetObjPtr( handle, OBJ_BRUSH )))
+    if ((brush = GDI_GetObjPtr( handle, OBJ_BRUSH, NULL )))
     {
         PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSelectBrush );
         struct brush_pattern *pattern = &brush->pattern;
@@ -478,7 +478,7 @@ static BOOL BRUSH_DeleteObject( HGDIOBJ handle )
  */
 static INT BRUSH_GetObject( HGDIOBJ handle, INT count, LPVOID buffer )
 {
-    BRUSHOBJ *brush = GDI_GetObjPtr( handle, OBJ_BRUSH );
+    BRUSHOBJ *brush = GDI_GetObjPtr( handle, OBJ_BRUSH, NULL );
 
     if (!brush) return 0;
     if (buffer)
diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c
index 5146f5b..311ac68 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -52,10 +52,11 @@ static const struct gdi_obj_funcs dc_funcs =
 
 static inline DC *get_dc_obj( HDC hdc )
 {
-    DC *dc = GDI_GetObjPtr( hdc, 0 );
+    WORD type;
+    DC *dc = GDI_GetObjPtr( hdc, 0, &type );
     if (!dc) return NULL;
 
-    switch (GetObjectType( hdc ))
+    switch (type)
     {
     case OBJ_DC:
     case OBJ_MEMDC:
diff --git a/dlls/gdi32/dib.c b/dlls/gdi32/dib.c
index ad2bf4f..adfb3eb 100644
--- a/dlls/gdi32/dib.c
+++ b/dlls/gdi32/dib.c
@@ -707,7 +707,7 @@ INT WINAPI SetDIBits( HDC hdc, HBITMAP hbitmap, UINT startscan,
 
     if (coloruse == DIB_PAL_COLORS && !fill_color_table_from_pal_colors( src_info, hdc )) return 0;
 
-    if (!(bitmap = GDI_GetObjPtr( hbitmap, OBJ_BITMAP ))) return 0;
+    if (!(bitmap = GDI_GetObjPtr( hbitmap, OBJ_BITMAP, NULL ))) return 0;
 
     if (src_info->bmiHeader.biCompression == BI_RLE4 || src_info->bmiHeader.biCompression == BI_RLE8)
     {
@@ -934,7 +934,7 @@ UINT WINAPI SetDIBColorTable( HDC hdc, UINT startpos, UINT entries, const RGBQUA
 
     if (!(dc = get_dc_ptr( hdc ))) return 0;
 
-    if ((bitmap = GDI_GetObjPtr( dc->hBitmap, OBJ_BITMAP )))
+    if ((bitmap = GDI_GetObjPtr( dc->hBitmap, OBJ_BITMAP, NULL )))
     {
         if (startpos < bitmap->dib.dsBmih.biClrUsed)
         {
@@ -967,7 +967,7 @@ UINT WINAPI GetDIBColorTable( HDC hdc, UINT startpos, UINT entries, RGBQUAD *col
 
     if (!(dc = get_dc_ptr( hdc ))) return 0;
 
-    if ((bitmap = GDI_GetObjPtr( dc->hBitmap, OBJ_BITMAP )))
+    if ((bitmap = GDI_GetObjPtr( dc->hBitmap, OBJ_BITMAP, NULL )))
     {
         if (startpos < bitmap->dib.dsBmih.biClrUsed)
         {
@@ -1248,7 +1248,7 @@ INT WINAPI GetDIBits(
         return 0;
     }
     update_dc( dc );
-    if (!(bmp = GDI_GetObjPtr( hbitmap, OBJ_BITMAP )))
+    if (!(bmp = GDI_GetObjPtr( hbitmap, OBJ_BITMAP, NULL )))
     {
         release_dc_ptr( dc );
 	return 0;
@@ -1736,7 +1736,7 @@ static HGDIOBJ DIB_SelectObject( HGDIOBJ handle, HDC hdc )
     ret = dc->hBitmap;
     if (handle == dc->hBitmap) goto done;  /* nothing to do */
 
-    if (!(bitmap = GDI_GetObjPtr( handle, OBJ_BITMAP )))
+    if (!(bitmap = GDI_GetObjPtr( handle, OBJ_BITMAP, NULL )))
     {
         ret = 0;
         goto done;
@@ -1783,7 +1783,7 @@ static HGDIOBJ DIB_SelectObject( HGDIOBJ handle, HDC hdc )
 static INT DIB_GetObject( HGDIOBJ handle, INT count, LPVOID buffer )
 {
     INT ret = 0;
-    BITMAPOBJ *bmp = GDI_GetObjPtr( handle, OBJ_BITMAP );
+    BITMAPOBJ *bmp = GDI_GetObjPtr( handle, OBJ_BITMAP, NULL );
 
     if (!bmp) return 0;
 
diff --git a/dlls/gdi32/dibdrv/dc.c b/dlls/gdi32/dibdrv/dc.c
index 9bd263c..eb44b05 100644
--- a/dlls/gdi32/dibdrv/dc.c
+++ b/dlls/gdi32/dibdrv/dc.c
@@ -354,7 +354,7 @@ static BOOL dibdrv_DeleteDC( PHYSDEV dev )
 static HBITMAP dibdrv_SelectBitmap( PHYSDEV dev, HBITMAP bitmap )
 {
     dibdrv_physdev *pdev = get_dibdrv_pdev(dev);
-    BITMAPOBJ *bmp = GDI_GetObjPtr( bitmap, OBJ_BITMAP );
+    BITMAPOBJ *bmp = GDI_GetObjPtr( bitmap, OBJ_BITMAP, NULL );
     dib_info dib;
 
     TRACE("(%p, %p)\n", dev, bitmap);
diff --git a/dlls/gdi32/dibdrv/opengl.c b/dlls/gdi32/dibdrv/opengl.c
index 4133116..8aab56d 100644
--- a/dlls/gdi32/dibdrv/opengl.c
+++ b/dlls/gdi32/dibdrv/opengl.c
@@ -266,7 +266,7 @@ static BOOL dibdrv_wglMakeCurrent( HDC hdc, struct wgl_context *context )
                GetPixelFormat( hdc ), context->format );
 
     bitmap = GetCurrentObject( hdc, OBJ_BITMAP );
-    bmp = GDI_GetObjPtr( bitmap, OBJ_BITMAP );
+    bmp = GDI_GetObjPtr( bitmap, OBJ_BITMAP, NULL );
     if (!bmp) return FALSE;
 
     if (init_dib_info_from_bitmapobj( &dib, bmp ))
diff --git a/dlls/gdi32/enhmetafile.c b/dlls/gdi32/enhmetafile.c
index cffac37..596d9cc 100644
--- a/dlls/gdi32/enhmetafile.c
+++ b/dlls/gdi32/enhmetafile.c
@@ -298,7 +298,7 @@ static BOOL EMF_Delete_HENHMETAFILE( HENHMETAFILE hmf )
 static ENHMETAHEADER *EMF_GetEnhMetaHeader( HENHMETAFILE hmf )
 {
     ENHMETAHEADER *ret = NULL;
-    ENHMETAFILEOBJ *metaObj = GDI_GetObjPtr( hmf, OBJ_ENHMETAFILE );
+    ENHMETAFILEOBJ *metaObj = GDI_GetObjPtr( hmf, OBJ_ENHMETAFILE, NULL );
     TRACE("hmf %p -> enhmetaObj %p\n", hmf, metaObj);
     if (metaObj)
     {
diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c
index fade4df..903fd34 100644
--- a/dlls/gdi32/font.c
+++ b/dlls/gdi32/font.c
@@ -733,7 +733,7 @@ static HGDIOBJ FONT_SelectObject( HGDIOBJ handle, HDC hdc )
  */
 static INT FONT_GetObjectA( HGDIOBJ handle, INT count, LPVOID buffer )
 {
-    FONTOBJ *font = GDI_GetObjPtr( handle, OBJ_FONT );
+    FONTOBJ *font = GDI_GetObjPtr( handle, OBJ_FONT, NULL );
     LOGFONTA lfA;
 
     if (!font) return 0;
@@ -753,7 +753,7 @@ static INT FONT_GetObjectA( HGDIOBJ handle, INT count, LPVOID buffer )
  */
 static INT FONT_GetObjectW( HGDIOBJ handle, INT count, LPVOID buffer )
 {
-    FONTOBJ *font = GDI_GetObjPtr( handle, OBJ_FONT );
+    FONTOBJ *font = GDI_GetObjPtr( handle, OBJ_FONT, NULL );
 
     if (!font) return 0;
     if (buffer)
diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h
index 9c58747..fd1405a 100644
--- a/dlls/gdi32/gdi_private.h
+++ b/dlls/gdi32/gdi_private.h
@@ -298,7 +298,7 @@ extern BOOL WineEngRemoveFontResourceEx(LPCWSTR, DWORD, PVOID) DECLSPEC_HIDDEN;
 extern HGDIOBJ alloc_gdi_handle( void *obj, WORD type, const struct gdi_obj_funcs *funcs ) DECLSPEC_HIDDEN;
 extern void *free_gdi_handle( HGDIOBJ handle ) DECLSPEC_HIDDEN;
 extern HGDIOBJ get_full_gdi_handle( HGDIOBJ handle ) DECLSPEC_HIDDEN;
-extern void *GDI_GetObjPtr( HGDIOBJ, WORD ) DECLSPEC_HIDDEN;
+extern void *GDI_GetObjPtr( HGDIOBJ, WORD, WORD * ) DECLSPEC_HIDDEN;
 extern void GDI_ReleaseObj( HGDIOBJ ) DECLSPEC_HIDDEN;
 extern void GDI_CheckNotLock(void) DECLSPEC_HIDDEN;
 extern UINT GDI_get_ref_count( HGDIOBJ handle ) DECLSPEC_HIDDEN;
@@ -363,7 +363,7 @@ typedef struct
 /* return the region data without making a copy */
 static inline const WINEREGION *get_wine_region(HRGN rgn)
 {
-    return GDI_GetObjPtr( rgn, OBJ_REGION );
+    return GDI_GetObjPtr( rgn, OBJ_REGION, NULL );
 }
 static inline void release_wine_region(HRGN rgn)
 {
diff --git a/dlls/gdi32/gdiobj.c b/dlls/gdi32/gdiobj.c
index 237544d..44b18ac 100644
--- a/dlls/gdi32/gdiobj.c
+++ b/dlls/gdi32/gdiobj.c
@@ -835,7 +835,7 @@ HGDIOBJ get_full_gdi_handle( HGDIOBJ handle )
  * Return NULL if the object has the wrong magic number.
  * The object must be released with GDI_ReleaseObj.
  */
-void *GDI_GetObjPtr( HGDIOBJ handle, WORD type )
+void *GDI_GetObjPtr( HGDIOBJ handle, WORD type, WORD *type_ret )
 {
     void *ptr = NULL;
     struct gdi_handle_entry *entry;
@@ -844,7 +844,11 @@ void *GDI_GetObjPtr( HGDIOBJ handle, WORD type )
 
     if ((entry = handle_entry( handle )))
     {
-        if (!type || entry->type == type) ptr = entry->obj;
+        if (!type || entry->type == type)
+        {
+            ptr = entry->obj;
+            if (type_ret) *type_ret = entry->type;
+        }
     }
 
     if (!ptr) LeaveCriticalSection( &gdi_section );
diff --git a/dlls/gdi32/metafile.c b/dlls/gdi32/metafile.c
index c7e25a7..9be9803 100644
--- a/dlls/gdi32/metafile.c
+++ b/dlls/gdi32/metafile.c
@@ -284,7 +284,7 @@ METAHEADER *MF_CreateMetaHeaderDisk(METAHEADER *mh, LPCVOID filename, BOOL uni )
 /* return a copy of the metafile bits, to be freed with HeapFree */
 static METAHEADER *get_metafile_bits( HMETAFILE hmf )
 {
-    METAHEADER *ret, *mh = GDI_GetObjPtr( hmf, OBJ_METAFILE );
+    METAHEADER *ret, *mh = GDI_GetObjPtr( hmf, OBJ_METAFILE, NULL );
 
     if (!mh) return NULL;
 
@@ -1086,7 +1086,7 @@ HMETAFILE WINAPI SetMetaFileBitsEx( UINT size, const BYTE *lpData )
  */
 UINT WINAPI GetMetaFileBitsEx( HMETAFILE hmf, UINT nSize, LPVOID buf )
 {
-    METAHEADER *mh = GDI_GetObjPtr( hmf, OBJ_METAFILE );
+    METAHEADER *mh = GDI_GetObjPtr( hmf, OBJ_METAFILE, NULL );
     UINT mfSize;
     BOOL mf_copy = FALSE;
 
diff --git a/dlls/gdi32/palette.c b/dlls/gdi32/palette.c
index be84b71..724ee47 100644
--- a/dlls/gdi32/palette.c
+++ b/dlls/gdi32/palette.c
@@ -194,7 +194,7 @@ UINT WINAPI GetPaletteEntries(
 
     TRACE("hpal = %p, count=%i\n", hpalette, count );
 
-    palPtr = GDI_GetObjPtr( hpalette, OBJ_PAL );
+    palPtr = GDI_GetObjPtr( hpalette, OBJ_PAL, NULL );
     if (!palPtr) return 0;
 
     /* NOTE: not documented but test show this to be the case */
@@ -240,7 +240,7 @@ UINT WINAPI SetPaletteEntries(
 
     hpalette = get_full_gdi_handle( hpalette );
     if (hpalette == GetStockObject(DEFAULT_PALETTE)) return 0;
-    palPtr = GDI_GetObjPtr( hpalette, OBJ_PAL );
+    palPtr = GDI_GetObjPtr( hpalette, OBJ_PAL, NULL );
     if (!palPtr) return 0;
 
     numEntries = palPtr->count;
@@ -270,7 +270,7 @@ BOOL WINAPI ResizePalette(
     HPALETTE hPal, /* [in] Handle of logical palette */
     UINT cEntries) /* [in] Number of entries in logical palette */
 {
-    PALETTEOBJ * palPtr = GDI_GetObjPtr( hPal, OBJ_PAL );
+    PALETTEOBJ * palPtr = GDI_GetObjPtr( hPal, OBJ_PAL, NULL );
     PALETTEENTRY *entries;
 
     if( !palPtr ) return FALSE;
@@ -318,7 +318,7 @@ BOOL WINAPI AnimatePalette(
         UINT pal_entries;
         const PALETTEENTRY *pptr = PaletteColors;
 
-        palPtr = GDI_GetObjPtr( hPal, OBJ_PAL );
+        palPtr = GDI_GetObjPtr( hPal, OBJ_PAL, NULL );
         if (!palPtr) return FALSE;
 
         pal_entries = palPtr->count;
@@ -473,7 +473,7 @@ UINT WINAPI GetNearestPaletteIndex(
     HPALETTE hpalette, /* [in] Handle of logical color palette */
     COLORREF color)      /* [in] Color to be matched */
 {
-    PALETTEOBJ* palObj = GDI_GetObjPtr( hpalette, OBJ_PAL );
+    PALETTEOBJ* palObj = GDI_GetObjPtr( hpalette, OBJ_PAL, NULL );
     UINT index  = 0;
 
     if( palObj )
@@ -562,7 +562,7 @@ COLORREF WINAPI GetNearestColor(
  */
 static INT PALETTE_GetObject( HGDIOBJ handle, INT count, LPVOID buffer )
 {
-    PALETTEOBJ *palette = GDI_GetObjPtr( handle, OBJ_PAL );
+    PALETTEOBJ *palette = GDI_GetObjPtr( handle, OBJ_PAL, NULL );
 
     if (!palette) return 0;
 
@@ -582,7 +582,7 @@ static INT PALETTE_GetObject( HGDIOBJ handle, INT count, LPVOID buffer )
  */
 static BOOL PALETTE_UnrealizeObject( HGDIOBJ handle )
 {
-    PALETTEOBJ *palette = GDI_GetObjPtr( handle, OBJ_PAL );
+    PALETTEOBJ *palette = GDI_GetObjPtr( handle, OBJ_PAL, NULL );
 
     if (palette)
     {
@@ -665,7 +665,7 @@ UINT WINAPI GDIRealizePalette( HDC hdc )
     else if (InterlockedExchangePointer( (void **)&hLastRealizedPalette, dc->hPalette ) != dc->hPalette)
     {
         PHYSDEV physdev = GET_DC_PHYSDEV( dc, pRealizePalette );
-        PALETTEOBJ *palPtr = GDI_GetObjPtr( dc->hPalette, OBJ_PAL );
+        PALETTEOBJ *palPtr = GDI_GetObjPtr( dc->hPalette, OBJ_PAL, NULL );
         if (palPtr)
         {
             realized = physdev->funcs->pRealizePalette( physdev, dc->hPalette,
diff --git a/dlls/gdi32/pen.c b/dlls/gdi32/pen.c
index cf4b080..02f4068 100644
--- a/dlls/gdi32/pen.c
+++ b/dlls/gdi32/pen.c
@@ -223,6 +223,7 @@ static HGDIOBJ PEN_SelectObject( HGDIOBJ handle, HDC hdc )
     PENOBJ *pen;
     HGDIOBJ ret = 0;
     DC *dc = get_dc_ptr( hdc );
+    WORD type;
 
     if (!dc)
     {
@@ -230,12 +231,12 @@ static HGDIOBJ PEN_SelectObject( HGDIOBJ handle, HDC hdc )
         return 0;
     }
 
-    if ((pen = GDI_GetObjPtr( handle, 0 )))
+    if ((pen = GDI_GetObjPtr( handle, 0, &type )))
     {
         struct brush_pattern *pattern;
         PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSelectPen );
 
-        switch (GetObjectType( handle ))
+        switch (type)
         {
         case OBJ_PEN:
             pattern = NULL;
@@ -287,12 +288,13 @@ static BOOL PEN_DeleteObject( HGDIOBJ handle )
  */
 static INT PEN_GetObject( HGDIOBJ handle, INT count, LPVOID buffer )
 {
-    PENOBJ *pen = GDI_GetObjPtr( handle, 0 );
+    WORD type;
+    PENOBJ *pen = GDI_GetObjPtr( handle, 0, &type );
     INT ret = 0;
 
     if (!pen) return 0;
 
-    switch (GetObjectType( handle ))
+    switch (type)
     {
     case OBJ_PEN:
     {
diff --git a/dlls/gdi32/region.c b/dlls/gdi32/region.c
index cea2dab..0b0ff47 100644
--- a/dlls/gdi32/region.c
+++ b/dlls/gdi32/region.c
@@ -523,7 +523,7 @@ static BOOL REGION_OffsetRegion( WINEREGION *rgn, WINEREGION *srcrgn, INT x, INT
  */
 INT WINAPI OffsetRgn( HRGN hrgn, INT x, INT y )
 {
-    WINEREGION *obj = GDI_GetObjPtr( hrgn, OBJ_REGION );
+    WINEREGION *obj = GDI_GetObjPtr( hrgn, OBJ_REGION, NULL );
     INT ret;
 
     TRACE("%p %d,%d\n", hrgn, x, y);
@@ -558,7 +558,7 @@ INT WINAPI OffsetRgn( HRGN hrgn, INT x, INT y )
  */
 INT WINAPI GetRgnBox( HRGN hrgn, LPRECT rect )
 {
-    WINEREGION *obj = GDI_GetObjPtr( hrgn, OBJ_REGION );
+    WINEREGION *obj = GDI_GetObjPtr( hrgn, OBJ_REGION, NULL );
     if (obj)
     {
 	INT ret;
@@ -659,7 +659,7 @@ BOOL WINAPI SetRectRgn( HRGN hrgn, INT left, INT top,
 
     TRACE("%p %d,%d-%d,%d\n", hrgn, left, top, right, bottom );
 
-    if (!(obj = GDI_GetObjPtr( hrgn, OBJ_REGION ))) return FALSE;
+    if (!(obj = GDI_GetObjPtr( hrgn, OBJ_REGION, NULL ))) return FALSE;
 
     if (left > right) { INT tmp = left; left = right; right = tmp; }
     if (top > bottom) { INT tmp = top; top = bottom; bottom = tmp; }
@@ -875,7 +875,7 @@ HRGN WINAPI CreateEllipticRgnIndirect( const RECT *rect )
 DWORD WINAPI GetRegionData(HRGN hrgn, DWORD count, LPRGNDATA rgndata)
 {
     DWORD size;
-    WINEREGION *obj = GDI_GetObjPtr( hrgn, OBJ_REGION );
+    WINEREGION *obj = GDI_GetObjPtr( hrgn, OBJ_REGION, NULL );
 
     TRACE(" %p count = %d, rgndata = %p\n", hrgn, count, rgndata);
 
@@ -1036,7 +1036,7 @@ BOOL WINAPI PtInRegion( HRGN hrgn, INT x, INT y )
     WINEREGION *obj;
     BOOL ret = FALSE;
 
-    if ((obj = GDI_GetObjPtr( hrgn, OBJ_REGION )))
+    if ((obj = GDI_GetObjPtr( hrgn, OBJ_REGION, NULL )))
     {
         region_find_pt( obj, x, y, &ret );
 	GDI_ReleaseObj( hrgn );
@@ -1070,7 +1070,7 @@ BOOL WINAPI RectInRegion( HRGN hrgn, const RECT *rect )
     rc = *rect;
     order_rect( &rc );
 
-    if ((obj = GDI_GetObjPtr( hrgn, OBJ_REGION )))
+    if ((obj = GDI_GetObjPtr( hrgn, OBJ_REGION, NULL )))
     {
 	if ((obj->numRects > 0) && overlapping(&obj->extents, &rc))
 	{
@@ -1113,9 +1113,9 @@ BOOL WINAPI EqualRgn( HRGN hrgn1, HRGN hrgn2 )
     WINEREGION *obj1, *obj2;
     BOOL ret = FALSE;
 
-    if ((obj1 = GDI_GetObjPtr( hrgn1, OBJ_REGION )))
+    if ((obj1 = GDI_GetObjPtr( hrgn1, OBJ_REGION, NULL )))
     {
-        if ((obj2 = GDI_GetObjPtr( hrgn2, OBJ_REGION )))
+        if ((obj2 = GDI_GetObjPtr( hrgn2, OBJ_REGION, NULL )))
 	{
 	    int i;
 
@@ -1164,7 +1164,7 @@ static BOOL REGION_UnionRectWithRegion(const RECT *rect, WINEREGION *rgn)
 
 BOOL add_rect_to_region( HRGN rgn, const RECT *rect )
 {
-    WINEREGION *obj = GDI_GetObjPtr( rgn, OBJ_REGION );
+    WINEREGION *obj = GDI_GetObjPtr( rgn, OBJ_REGION, NULL );
     BOOL ret;
 
     if (!obj) return FALSE;
@@ -1186,13 +1186,13 @@ BOOL REGION_FrameRgn( HRGN hDest, HRGN hSrc, INT x, INT y )
     WINEREGION tmprgn;
     BOOL bRet = FALSE;
     WINEREGION* destObj = NULL;
-    WINEREGION *srcObj = GDI_GetObjPtr( hSrc, OBJ_REGION );
+    WINEREGION *srcObj = GDI_GetObjPtr( hSrc, OBJ_REGION, NULL );
 
     tmprgn.rects = NULL;
     if (!srcObj) return FALSE;
     if (srcObj->numRects != 0)
     {
-        if (!(destObj = GDI_GetObjPtr( hDest, OBJ_REGION ))) goto done;
+        if (!(destObj = GDI_GetObjPtr( hDest, OBJ_REGION, NULL ))) goto done;
         if (!init_region( &tmprgn, srcObj->numRects )) goto done;
 
         if (!REGION_OffsetRegion( destObj, srcObj, -x, 0)) goto done;
@@ -1243,13 +1243,13 @@ done:
  */
 INT WINAPI CombineRgn(HRGN hDest, HRGN hSrc1, HRGN hSrc2, INT mode)
 {
-    WINEREGION *destObj = GDI_GetObjPtr( hDest, OBJ_REGION );
+    WINEREGION *destObj = GDI_GetObjPtr( hDest, OBJ_REGION, NULL );
     INT result = ERROR;
 
     TRACE(" %p,%p -> %p mode=%x\n", hSrc1, hSrc2, hDest, mode );
     if (destObj)
     {
-        WINEREGION *src1Obj = GDI_GetObjPtr( hSrc1, OBJ_REGION );
+        WINEREGION *src1Obj = GDI_GetObjPtr( hSrc1, OBJ_REGION, NULL );
 
 	if (src1Obj)
 	{
@@ -1263,7 +1263,7 @@ INT WINAPI CombineRgn(HRGN hDest, HRGN hSrc1, HRGN hSrc2, INT mode)
 	    }
 	    else
 	    {
-                WINEREGION *src2Obj = GDI_GetObjPtr( hSrc2, OBJ_REGION );
+                WINEREGION *src2Obj = GDI_GetObjPtr( hSrc2, OBJ_REGION, NULL );
 
 		if (src2Obj)
 		{
@@ -1417,8 +1417,8 @@ INT mirror_region( HRGN dst, HRGN src, INT width )
     WINEREGION *src_rgn, *dst_rgn;
     INT ret = ERROR;
 
-    if (!(src_rgn = GDI_GetObjPtr( src, OBJ_REGION ))) return ERROR;
-    if ((dst_rgn = GDI_GetObjPtr( dst, OBJ_REGION )))
+    if (!(src_rgn = GDI_GetObjPtr( src, OBJ_REGION, NULL ))) return ERROR;
+    if ((dst_rgn = GDI_GetObjPtr( dst, OBJ_REGION, NULL )))
     {
         if (REGION_MirrorRegion( dst_rgn, src_rgn, width )) ret = get_region_type( dst_rgn );
         GDI_ReleaseObj( dst_rgn );
-- 
2.7.4




More information about the wine-patches mailing list