[PATCH 2/3] Get rid of magic field, use vtable pointer instead. Keep original layout.
Nikolay Sivov
bunglehead at gmail.com
Sat Nov 14 22:57:11 CST 2009
---
dlls/comctl32/imagelist.c | 12 ++++++------
dlls/comctl32/imagelist.h | 30 +++++++++++++++---------------
2 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/dlls/comctl32/imagelist.c b/dlls/comctl32/imagelist.c
index 82d2664..9a68d65 100644
--- a/dlls/comctl32/imagelist.c
+++ b/dlls/comctl32/imagelist.c
@@ -81,11 +81,7 @@ static INTERNALDRAG InternalDrag = { 0, 0, 0, 0, 0, 0, FALSE, 0 };
static HBITMAP ImageList_CreateImage(HDC hdc, HIMAGELIST himl, UINT count, UINT width);
static HRESULT ImageListImpl_CreateInstance(const IUnknown *pUnkOuter, REFIID iid, void** ppv);
-
-static inline BOOL is_valid(HIMAGELIST himl)
-{
- return himl && himl->magic == IMAGELIST_MAGIC;
-}
+static inline BOOL is_valid(HIMAGELIST himl);
/*
* An imagelist with N images is tiled like this:
@@ -607,7 +603,6 @@ ImageList_Create (INT cx, INT cy, UINT flags,
cGrow = (cGrow < 4) ? 4 : (cGrow + 3) & ~3;
- himl->magic = IMAGELIST_MAGIC;
himl->cx = cx;
himl->cy = cy;
himl->flags = flags;
@@ -3216,6 +3211,11 @@ static const IImageListVtbl ImageListImpl_Vtbl = {
ImageListImpl_GetOverlayImage
};
+static inline BOOL is_valid(HIMAGELIST himl)
+{
+ return himl && himl->lpVtbl == &ImageListImpl_Vtbl;
+}
+
/*************************************************************************
* HIMAGELIST_QueryInterface [COMCTL32.@]
*
diff --git a/dlls/comctl32/imagelist.h b/dlls/comctl32/imagelist.h
index efcd1b0..a979ebf 100644
--- a/dlls/comctl32/imagelist.h
+++ b/dlls/comctl32/imagelist.h
@@ -30,31 +30,31 @@
struct _IMAGELIST
{
const struct IImageListVtbl *lpVtbl; /* 00: IImageList vtable */
- LONG ref; /* 04: reference count */
- DWORD magic; /* 08: 'SAMX' */
- INT cCurImage; /* 0C: ImageCount */
- INT cMaxImage; /* 10: maximages */
- INT cGrow; /* 14: cGrow */
- INT cx; /* 18: cx */
- INT cy; /* 1C: cy */
+ INT cCurImage; /* 04: ImageCount */
+ INT cMaxImage; /* 08: maximages */
+ INT cGrow; /* 0C: cGrow */
+ INT cx; /* 10: cx */
+ INT cy; /* 14: cy */
DWORD x4;
- UINT flags; /* 24: flags */
- COLORREF clrFg; /* 28: foreground color */
- COLORREF clrBk; /* 2C: background color */
+ UINT flags; /* 1C: flags */
+ COLORREF clrFg; /* 20: foreground color */
+ COLORREF clrBk; /* 24: background color */
- HBITMAP hbmImage; /* 30: images Bitmap */
- HBITMAP hbmMask; /* 34: masks Bitmap */
- HDC hdcImage; /* 38: images MemDC */
- HDC hdcMask; /* 3C: masks MemDC */
- INT nOvlIdx[15]; /* 40: overlay images index */
+ HBITMAP hbmImage; /* 28: images Bitmap */
+ HBITMAP hbmMask; /* 2C: masks Bitmap */
+ HDC hdcImage; /* 30: images MemDC */
+ HDC hdcMask; /* 34: masks MemDC */
+ INT nOvlIdx[15]; /* 38: overlay images index */
/* not yet found out */
HBRUSH hbrBlend25;
HBRUSH hbrBlend50;
INT cInitial;
UINT uBitsPixel;
+
+ LONG ref; /* reference count */
};
#define IMAGELIST_MAGIC 0x53414D58
--
1.5.6.5
--=-oUQoF7xiI82T0AeXw9sP--
More information about the wine-patches
mailing list