Alexander Dorofeyev : ddraw: Return DDERR_NOCOLORKEY when there is no colorkey.
Alexandre Julliard
julliard at winehq.org
Tue May 6 09:32:17 CDT 2008
Module: wine
Branch: master
Commit: d6ecf5d14d50cde431e16afaf5d0e66baeb1da90
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d6ecf5d14d50cde431e16afaf5d0e66baeb1da90
Author: Alexander Dorofeyev <alexd4 at inbox.lv>
Date: Tue May 6 00:49:32 2008 +0300
ddraw: Return DDERR_NOCOLORKEY when there is no colorkey.
---
dlls/ddraw/surface.c | 24 +++++++++++++++++++++---
1 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index 3467a64..5f31c0a 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -1490,9 +1490,6 @@ IDirectDrawSurfaceImpl_GetColorKey(IDirectDrawSurface7 *iface,
DWORD Flags,
DDCOLORKEY *CKey)
{
- /* There is a DDERR_NOCOLORKEY error, but how do we know if a color key
- * isn't there? That's like saying that an int isn't there. (Which MS
- * has done in other docs.) */
ICOM_THIS_FROM(IDirectDrawSurfaceImpl, IDirectDrawSurface7, iface);
TRACE("(%p)->(%08x,%p)\n", This, Flags, CKey);
@@ -1500,21 +1497,42 @@ IDirectDrawSurfaceImpl_GetColorKey(IDirectDrawSurface7 *iface,
return DDERR_INVALIDPARAMS;
EnterCriticalSection(&ddraw_cs);
+
switch (Flags)
{
case DDCKEY_DESTBLT:
+ if (!(This->surface_desc.dwFlags & DDSD_CKDESTBLT))
+ {
+ LeaveCriticalSection(&ddraw_cs);
+ return DDERR_NOCOLORKEY;
+ }
*CKey = This->surface_desc.ddckCKDestBlt;
break;
case DDCKEY_DESTOVERLAY:
+ if (!(This->surface_desc.dwFlags & DDSD_CKDESTOVERLAY))
+ {
+ LeaveCriticalSection(&ddraw_cs);
+ return DDERR_NOCOLORKEY;
+ }
*CKey = This->surface_desc.u3.ddckCKDestOverlay;
break;
case DDCKEY_SRCBLT:
+ if (!(This->surface_desc.dwFlags & DDSD_CKSRCBLT))
+ {
+ LeaveCriticalSection(&ddraw_cs);
+ return DDERR_NOCOLORKEY;
+ }
*CKey = This->surface_desc.ddckCKSrcBlt;
break;
case DDCKEY_SRCOVERLAY:
+ if (!(This->surface_desc.dwFlags & DDSD_CKSRCOVERLAY))
+ {
+ LeaveCriticalSection(&ddraw_cs);
+ return DDERR_NOCOLORKEY;
+ }
*CKey = This->surface_desc.ddckCKSrcOverlay;
break;
More information about the wine-cvs
mailing list