From d483bdfcae3f8ecab5f657b3ac48f55bb6f4de7b Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Mon, 8 Aug 2005 21:29:25 +0000 Subject: [PATCH] Add a check to see if surface can be create, it return it can be create, but still createsurface return invaild param svn path=/trunk/; revision=17219 --- reactos/lib/ddraw/main/surface.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/reactos/lib/ddraw/main/surface.c b/reactos/lib/ddraw/main/surface.c index 0afb006d466..b7ef67b99ea 100644 --- a/reactos/lib/ddraw/main/surface.c +++ b/reactos/lib/ddraw/main/surface.c @@ -63,12 +63,26 @@ HRESULT WINAPI Main_DDrawSurface_Initialize (LPDIRECTDRAWSURFACE7 iface, LPDIREC CreateData.dwSCnt = 1; CreateData.lplpSList = &pLocal; - if(This->owner->DriverCallbacks.DdMain.CreateSurface (&CreateData) != DDHAL_DRIVER_HANDLED) - return DDERR_INVALIDPARAMS; + DDHAL_CANCREATESURFACEDATA CanCreateData; + memset(&CanCreateData, 0, sizeof(DD_CANCREATESURFACEDATA)); + CanCreateData.lpDD = &This->owner->DirectDrawGlobal; + CanCreateData.lpDDSurfaceDesc = (DDSURFACEDESC*)pDDSD; + + if (This->owner->DriverCallbacks.DdMain.CanCreateSurface (&CanCreateData) == DDHAL_DRIVER_NOTHANDLED) + return DDERR_INVALIDPARAMS; + + if(CreateData.ddRVal != DD_OK) + return CanCreateData.ddRVal; + + + if(This->owner->DriverCallbacks.DdMain.CreateSurface (&CreateData) == DDHAL_DRIVER_NOTHANDLED) + return DDERR_INVALIDPARAMS; + if(CreateData.ddRVal != DD_OK) return CreateData.ddRVal; + OutputDebugString(L"This does not get hit."); return DD_OK;