[PATCH 5/5] ddraw: Set DDPCAPS_PRIMARYSURFACE when attaching a palette to the primary surface.
Henri Verbeet
hverbeet at codeweavers.com
Thu Dec 12 03:23:33 CST 2013
---
dlls/ddraw/surface.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index a29f068..09dbb9c 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -4708,6 +4708,17 @@ static HRESULT WINAPI ddraw_surface7_SetPalette(IDirectDrawSurface7 *iface, IDir
wined3d_mutex_lock();
prev = surface->palette;
+ if (surface->surface_desc.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE)
+ {
+ if (prev)
+ prev->flags &= ~DDPCAPS_PRIMARYSURFACE;
+ if (palette_impl)
+ palette_impl->flags |= DDPCAPS_PRIMARYSURFACE;
+ /* Update the wined3d frontbuffer if this is the primary. */
+ if (surface->ddraw->wined3d_frontbuffer)
+ wined3d_surface_set_palette(surface->ddraw->wined3d_frontbuffer,
+ palette_impl ? palette_impl->wineD3DPalette : NULL);
+ }
if (palette_impl)
IDirectDrawPalette_AddRef(&palette_impl->IDirectDrawPalette_iface);
if (prev)
@@ -4715,11 +4726,6 @@ static HRESULT WINAPI ddraw_surface7_SetPalette(IDirectDrawSurface7 *iface, IDir
surface->palette = palette_impl;
wined3d_surface_set_palette(surface->wined3d_surface, palette_impl ? palette_impl->wineD3DPalette : NULL);
- /* Update the wined3d frontbuffer if this is the primary. */
- if ((surface->surface_desc.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) && surface->ddraw->wined3d_frontbuffer)
- wined3d_surface_set_palette(surface->ddraw->wined3d_frontbuffer,
- palette_impl ? palette_impl->wineD3DPalette : NULL);
-
wined3d_mutex_unlock();
return DD_OK;
--
1.7.10.4
More information about the wine-patches
mailing list