Module: wine Branch: master Commit: c5a8b933afb0d671da1084e4964cf1be26318369 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c5a8b933afb0d671da1084e496...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Fri Dec 13 09:07:45 2013 +0100
ddraw: Unset the primary surface's palette when the palette is released.
---
dlls/ddraw/ddraw_private.h | 1 + dlls/ddraw/palette.c | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h index b24376d..fb3755f 100644 --- a/dlls/ddraw/ddraw_private.h +++ b/dlls/ddraw/ddraw_private.h @@ -379,6 +379,7 @@ struct ddraw_palette LONG ref;
struct wined3d_palette *wineD3DPalette; + struct ddraw *ddraw; IUnknown *ifaceToRelease; DWORD flags; }; diff --git a/dlls/ddraw/palette.c b/dlls/ddraw/palette.c index 0c9534d..f35531e 100644 --- a/dlls/ddraw/palette.c +++ b/dlls/ddraw/palette.c @@ -94,10 +94,10 @@ static ULONG WINAPI ddraw_palette_Release(IDirectDrawPalette *iface) { wined3d_mutex_lock(); wined3d_palette_decref(This->wineD3DPalette); - if(This->ifaceToRelease) - { + if ((This->flags & DDPCAPS_PRIMARYSURFACE) && This->ddraw->primary) + This->ddraw->primary->palette = NULL; + if (This->ifaceToRelease) IUnknown_Release(This->ifaceToRelease); - } wined3d_mutex_unlock();
HeapFree(GetProcessHeap(), 0, This); @@ -251,6 +251,7 @@ HRESULT ddraw_palette_init(struct ddraw_palette *palette, return hr; }
+ palette->ddraw = ddraw; palette->ifaceToRelease = (IUnknown *)&ddraw->IDirectDraw7_iface; IUnknown_AddRef(palette->ifaceToRelease);