From 1b94a5eefde0871bc4eacd664a54e295c977f9a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Mon, 7 May 2007 19:42:07 +0200 Subject: [PATCH] ddraw: Fix stupid bug when setting surface client memory. --- dlls/ddraw/surface.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index 220444dc3dc..d0c93d7dbe3 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -2001,12 +2001,6 @@ IDirectDrawSurfaceImpl_SetSurfaceDesc(IDirectDrawSurface7 *iface, if(!DDSD) return DDERR_INVALIDPARAMS; - if (DDSD->dwFlags & DDSD_LPSURFACE && DDSD->lpSurface) - { - ERR("Setting the surface memory isn't supported yet\n"); - return DDERR_INVALIDPARAMS; - - } if (DDSD->dwFlags & DDSD_PIXELFORMAT) { newFormat = PixelFormat_DD2WineD3D(&DDSD->u4.ddpfPixelFormat); @@ -2047,14 +2041,19 @@ IDirectDrawSurfaceImpl_SetSurfaceDesc(IDirectDrawSurface7 *iface, DDCKEY_SRCBLT, (WINEDDCOLORKEY *) &DDSD->ddckCKSrcBlt); } - if (DDSD->dwFlags & DDSD_LPSURFACE) + if (DDSD->dwFlags & DDSD_LPSURFACE && DDSD->lpSurface) { hr = IWineD3DSurface_SetMem(This->WineD3DSurface, DDSD->lpSurface); if(hr != WINED3D_OK) { /* No need for a trace here, wined3d does that for us */ - return hr; + switch(hr) + { + case WINED3DERR_INVALIDCALL: return DDERR_INVALIDPARAMS; + default: break; /* Go on */ + } } + } This->surface_desc = *DDSD;