Henri Verbeet : ddraw: Unset the primary surface' s palette when the palette is released.
Module: wine Branch: master Commit: c5a8b933afb0d671da1084e4964cf1be26318369 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c5a8b933afb0d671da1084e496... Author: Henri Verbeet <hverbeet(a)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);
participants (1)
-
Alexandre Julliard