Module: wine Branch: master Commit: 3c5b9557b548a122a7375cf199b4a9b242506115 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3c5b9557b548a122a7375cf199...
Author: Günther Brammer GBrammer@gmx.de Date: Sat Dec 9 23:13:14 2006 +0100
ddraw: Fix IDirectDrawSurfaceImpl_SetColorKey to also change surface_desc.
---
dlls/ddraw/surface.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 52 insertions(+), 0 deletions(-)
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index cab163b..03ea974 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -2037,6 +2037,58 @@ IDirectDrawSurfaceImpl_SetColorKey(IDire HRESULT hr; TRACE("(%p)->(%x,%p)\n", This, Flags, CKey);
+ if (CKey) + { + switch (Flags & ~DDCKEY_COLORSPACE) + { + case DDCKEY_DESTBLT: + This->surface_desc.ddckCKDestBlt = *CKey; + This->surface_desc.dwFlags |= DDSD_CKDESTBLT; + break; + + case DDCKEY_DESTOVERLAY: + This->surface_desc.u3.ddckCKDestOverlay = *CKey; + This->surface_desc.dwFlags |= DDSD_CKDESTOVERLAY; + break; + + case DDCKEY_SRCOVERLAY: + This->surface_desc.ddckCKSrcOverlay = *CKey; + This->surface_desc.dwFlags |= DDSD_CKSRCOVERLAY; + break; + + case DDCKEY_SRCBLT: + This->surface_desc.ddckCKSrcBlt = *CKey; + This->surface_desc.dwFlags |= DDSD_CKSRCBLT; + break; + + default: + return DDERR_INVALIDPARAMS; + } + } + else + { + switch (Flags & ~DDCKEY_COLORSPACE) + { + case DDCKEY_DESTBLT: + This->surface_desc.dwFlags &= ~DDSD_CKDESTBLT; + break; + + case DDCKEY_DESTOVERLAY: + This->surface_desc.dwFlags &= ~DDSD_CKDESTOVERLAY; + break; + + case DDCKEY_SRCOVERLAY: + This->surface_desc.dwFlags &= ~DDSD_CKSRCOVERLAY; + break; + + case DDCKEY_SRCBLT: + This->surface_desc.dwFlags &= ~DDSD_CKSRCBLT; + break; + + default: + return DDERR_INVALIDPARAMS; + } + } for(surf = This->first_complex; surf; surf = surf->next_complex) { hr = IWineD3DSurface_SetColorKey(surf->WineD3DSurface,