Alexandre Julliard : gdi32: Add a null driver entry point for UnrealizePalette.

Alexandre Julliard julliard at winehq.org
Thu Mar 17 12:26:59 CDT 2011


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Mar 16 22:58:07 2011 +0100

gdi32: Add a null driver entry point for UnrealizePalette.

---

 dlls/gdi32/driver.c  |    7 ++++++-
 dlls/gdi32/palette.c |   18 +++++++++---------
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/dlls/gdi32/driver.c b/dlls/gdi32/driver.c
index 8139e15..f040bde 100644
--- a/dlls/gdi32/driver.c
+++ b/dlls/gdi32/driver.c
@@ -714,6 +714,11 @@ static BOOL CDECL nulldrv_SwapBuffers( PHYSDEV dev )
     return TRUE;
 }
 
+static BOOL CDECL nulldrv_UnrealizePalette( HPALETTE palette )
+{
+    return FALSE;
+}
+
 static BOOL CDECL nulldrv_wglCopyContext( HGLRC ctx_src, HGLRC ctx_dst, UINT mask )
 {
     return FALSE;
@@ -895,7 +900,7 @@ const DC_FUNCTIONS null_driver =
     nulldrv_StrokeAndFillPath,          /* pStrokeAndFillPath */
     nulldrv_StrokePath,                 /* pStrokePath */
     nulldrv_SwapBuffers,                /* pSwapBuffers */
-    NULL,                               /* pUnrealizePalette */
+    nulldrv_UnrealizePalette,           /* pUnrealizePalette */
     nulldrv_WidenPath,                  /* pWidenPath */
     nulldrv_wglCopyContext,             /* pwglCopyContext */
     nulldrv_wglCreateContext,           /* pwglCreateContext */
diff --git a/dlls/gdi32/palette.c b/dlls/gdi32/palette.c
index a60f342..37e425d 100644
--- a/dlls/gdi32/palette.c
+++ b/dlls/gdi32/palette.c
@@ -38,10 +38,12 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(palette);
 
+typedef BOOL (CDECL *unrealize_function)(HPALETTE);
+
 typedef struct tagPALETTEOBJ
 {
     GDIOBJHDR           header;
-    const DC_FUNCTIONS *funcs;      /* DC function table */
+    unrealize_function  unrealize;
     WORD                version;    /* palette version */
     WORD                count;      /* count of palette entries */
     PALETTEENTRY       *entries;
@@ -152,7 +154,7 @@ HPALETTE WINAPI CreatePalette(
     size = sizeof(LOGPALETTE) + (palette->palNumEntries - 1) * sizeof(PALETTEENTRY);
 
     if (!(palettePtr = HeapAlloc( GetProcessHeap(), 0, sizeof(*palettePtr) ))) return 0;
-    palettePtr->funcs   = NULL;
+    palettePtr->unrealize = NULL;
     palettePtr->version = palette->palVersion;
     palettePtr->count   = palette->palNumEntries;
     size = palettePtr->count * sizeof(*palettePtr->entries);
@@ -410,7 +412,6 @@ BOOL WINAPI AnimatePalette(
         PALETTEOBJ * palPtr;
         UINT pal_entries;
         const PALETTEENTRY *pptr = PaletteColors;
-        const DC_FUNCTIONS *funcs;
 
         palPtr = GDI_GetObjPtr( hPal, OBJ_PAL );
         if (!palPtr) return 0;
@@ -436,9 +437,8 @@ BOOL WINAPI AnimatePalette(
             TRACE("Not animating entry %d -- not PC_RESERVED\n", StartIndex);
           }
         }
-        funcs = palPtr->funcs;
         GDI_ReleaseObj( hPal );
-        if (funcs && funcs->pRealizePalette) funcs->pRealizePalette( NULL, hPal, hPal == hPrimaryPalette );
+        /* FIXME: check for palette selected in active window */
     }
     return TRUE;
 }
@@ -650,10 +650,10 @@ static BOOL PALETTE_UnrealizeObject( HGDIOBJ handle )
 
     if (palette)
     {
-        const DC_FUNCTIONS *funcs = palette->funcs;
-        palette->funcs = NULL;
+        unrealize_function unrealize = palette->unrealize;
+        palette->unrealize = NULL;
         GDI_ReleaseObj( handle );
-        if (funcs && funcs->pUnrealizePalette) funcs->pUnrealizePalette( handle );
+        if (unrealize) unrealize( handle );
     }
 
     if (InterlockedCompareExchangePointer( (void **)&hLastRealizedPalette, 0, handle ) == handle)
@@ -733,7 +733,7 @@ UINT WINAPI GDIRealizePalette( HDC hdc )
         {
             realized = physdev->funcs->pRealizePalette( physdev, dc->hPalette,
                                                         (dc->hPalette == hPrimaryPalette) );
-            palPtr->funcs = dc->funcs;
+            palPtr->unrealize = physdev->funcs->pUnrealizePalette;
             GDI_ReleaseObj( dc->hPalette );
         }
     }




More information about the wine-cvs mailing list