Add a check to see if surface can be create, it return it can be create, but still createsurface return invaild param
Modified: trunk/reactos/lib/ddraw/main/surface.c

Modified: trunk/reactos/lib/ddraw/main/surface.c
--- trunk/reactos/lib/ddraw/main/surface.c	2005-08-08 18:59:56 UTC (rev 17218)
+++ trunk/reactos/lib/ddraw/main/surface.c	2005-08-08 21:29:25 UTC (rev 17219)
@@ -63,12 +63,26 @@
 	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;