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