ddraw: Fix stupid bug when setting surface client memory.

This commit is contained in:
Stefan Dösinger 2007-05-07 19:42:07 +02:00 committed by Alexandre Julliard
parent df891b823a
commit 1b94a5eefd
1 changed files with 7 additions and 8 deletions

View File

@ -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,16 +2041,21 @@ 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;
return DD_OK;