Alexandre Julliard : gdi32: BS_DIBPATTERN brushes use a 32-bit handle in 32-bit mode.
Alexandre Julliard
julliard at winehq.org
Mon Sep 28 11:54:33 CDT 2009
Module: wine
Branch: master
Commit: d69dd564956285f77d8973c7e28ed344aee0e5d5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d69dd564956285f77d8973c7e28ed344aee0e5d5
Author: Alexandre Julliard <julliard at winehq.org>
Date: Sat Sep 26 13:30:06 2009 +0200
gdi32: BS_DIBPATTERN brushes use a 32-bit handle in 32-bit mode.
---
dlls/gdi32/brush.c | 16 ++++++++--------
dlls/gdi32/enhmfdrv/objects.c | 4 ++--
dlls/gdi32/mfdrv/objects.c | 9 +++++++--
3 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/dlls/gdi32/brush.c b/dlls/gdi32/brush.c
index a9f3ae1..721da98 100644
--- a/dlls/gdi32/brush.c
+++ b/dlls/gdi32/brush.c
@@ -53,10 +53,10 @@ static const struct gdi_obj_funcs brush_funcs =
BRUSH_DeleteObject /* pDeleteObject */
};
-static HGLOBAL16 dib_copy(const BITMAPINFO *info, UINT coloruse)
+static HGLOBAL dib_copy(const BITMAPINFO *info, UINT coloruse)
{
BITMAPINFO *newInfo;
- HGLOBAL16 hmem;
+ HGLOBAL hmem;
INT size;
if (info->bmiHeader.biCompression != BI_RGB && info->bmiHeader.biCompression != BI_BITFIELDS)
@@ -67,13 +67,13 @@ static HGLOBAL16 dib_copy(const BITMAPINFO *info, UINT coloruse)
info->bmiHeader.biBitCount);
size += bitmap_info_size( info, coloruse );
- if (!(hmem = GlobalAlloc16( GMEM_MOVEABLE, size )))
+ if (!(hmem = GlobalAlloc( GMEM_MOVEABLE, size )))
{
return 0;
}
- newInfo = GlobalLock16( hmem );
+ newInfo = GlobalLock( hmem );
memcpy( newInfo, info, size );
- GlobalUnlock16( hmem );
+ GlobalUnlock( hmem );
return hmem;
}
@@ -133,7 +133,7 @@ HBRUSH WINAPI CreateBrushIndirect( const LOGBRUSH * brush )
ptr->logbrush.lbStyle = BS_DIBPATTERN;
if (!(bmi = GlobalLock( h ))) goto error;
- ptr->logbrush.lbHatch = dib_copy( bmi, ptr->logbrush.lbColor);
+ ptr->logbrush.lbHatch = (ULONG_PTR)dib_copy( bmi, ptr->logbrush.lbColor);
GlobalUnlock( h );
if (!ptr->logbrush.lbHatch) goto error;
break;
@@ -156,7 +156,7 @@ HBRUSH WINAPI CreateBrushIndirect( const LOGBRUSH * brush )
if (ptr->logbrush.lbStyle == BS_PATTERN)
DeleteObject( (HGDIOBJ)ptr->logbrush.lbHatch );
else if (ptr->logbrush.lbStyle == BS_DIBPATTERN)
- GlobalFree16( (HGLOBAL16)ptr->logbrush.lbHatch );
+ GlobalFree( (HGLOBAL)ptr->logbrush.lbHatch );
}
HeapFree( GetProcessHeap(), 0, ptr );
return 0;
@@ -423,7 +423,7 @@ static BOOL BRUSH_DeleteObject( HGDIOBJ handle )
DeleteObject( (HGDIOBJ)brush->logbrush.lbHatch );
break;
case BS_DIBPATTERN:
- GlobalFree16( (HGLOBAL16)brush->logbrush.lbHatch );
+ GlobalFree( (HGLOBAL)brush->logbrush.lbHatch );
break;
}
return HeapFree( GetProcessHeap(), 0, brush );
diff --git a/dlls/gdi32/enhmfdrv/objects.c b/dlls/gdi32/enhmfdrv/objects.c
index d2e7251..6879650 100644
--- a/dlls/gdi32/enhmfdrv/objects.c
+++ b/dlls/gdi32/enhmfdrv/objects.c
@@ -166,7 +166,7 @@ DWORD EMFDRV_CreateBrushIndirect( PHYSDEV dev, HBRUSH hBrush )
{
EMRCREATEDIBPATTERNBRUSHPT *emr;
DWORD bmSize, biSize, size;
- BITMAPINFO *info = GlobalLock16(logbrush.lbHatch);
+ BITMAPINFO *info = GlobalLock( (HGLOBAL)logbrush.lbHatch );
if (info->bmiHeader.biCompression)
bmSize = info->bmiHeader.biSizeImage;
@@ -192,7 +192,7 @@ DWORD EMFDRV_CreateBrushIndirect( PHYSDEV dev, HBRUSH hBrush )
if(!EMFDRV_WriteRecord( dev, &emr->emr ))
index = 0;
HeapFree( GetProcessHeap(), 0, emr );
- GlobalUnlock16(logbrush.lbHatch);
+ GlobalUnlock( (HGLOBAL)logbrush.lbHatch );
}
break;
diff --git a/dlls/gdi32/mfdrv/objects.c b/dlls/gdi32/mfdrv/objects.c
index b4f66ec..e74cde8 100644
--- a/dlls/gdi32/mfdrv/objects.c
+++ b/dlls/gdi32/mfdrv/objects.c
@@ -300,7 +300,7 @@ INT16 MFDRV_CreateBrushIndirect(PHYSDEV dev, HBRUSH hBrush )
BITMAPINFO *info;
DWORD bmSize, biSize;
- info = GlobalLock16((HGLOBAL16)logbrush.lbHatch);
+ info = GlobalLock( (HGLOBAL)logbrush.lbHatch );
if (info->bmiHeader.biCompression)
bmSize = info->bmiHeader.biSizeImage;
else
@@ -310,12 +310,17 @@ INT16 MFDRV_CreateBrushIndirect(PHYSDEV dev, HBRUSH hBrush )
biSize = bitmap_info_size(info, LOWORD(logbrush.lbColor));
size = sizeof(METARECORD) + biSize + bmSize + 2;
mr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size);
- if(!mr) goto done;
+ if (!mr)
+ {
+ GlobalUnlock( (HGLOBAL)logbrush.lbHatch );
+ goto done;
+ }
mr->rdFunction = META_DIBCREATEPATTERNBRUSH;
mr->rdSize = size / 2;
*(mr->rdParm) = logbrush.lbStyle;
*(mr->rdParm + 1) = LOWORD(logbrush.lbColor);
memcpy(mr->rdParm + 2, info, biSize + bmSize);
+ GlobalUnlock( (HGLOBAL)logbrush.lbHatch );
break;
}
default:
More information about the wine-cvs
mailing list