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