Nikolay Sivov : comctl32/imagelist: Get rid of magic field, use vtable pointer instead. Keep original layout.

Alexandre Julliard julliard at winehq.org
Mon Nov 16 11:44:00 CST 2009


Module: wine
Branch: master
Commit: 3e20458acafcf2c92cce4dfb30dafb28bb6dc99f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3e20458acafcf2c92cce4dfb30dafb28bb6dc99f

Author: Nikolay Sivov <bunglehead at gmail.com>
Date:   Sun Nov 15 07:57:11 2009 +0300

comctl32/imagelist: Get rid of magic field, use vtable pointer instead. Keep original layout.

---

 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 71f77b0..a49622c 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;
@@ -3320,6 +3315,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




More information about the wine-cvs mailing list