start config up createsurface right to create surface but we are not setting all value right yet.

svn path=/trunk/; revision=25081
This commit is contained in:
Magnus Olsen 2006-12-07 18:27:16 +00:00
parent f2f6e89dc0
commit 78eacb0873

View file

@ -183,6 +183,8 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE
LPDDRAWI_DIRECTDRAW_INT This = (LPDDRAWI_DIRECTDRAW_INT)iface; LPDDRAWI_DIRECTDRAW_INT This = (LPDDRAWI_DIRECTDRAW_INT)iface;
LPDDRAWI_DDRAWSURFACE_INT That; LPDDRAWI_DDRAWSURFACE_INT That;
DDHAL_CANCREATESURFACEDATA mDdCanCreateSurface;
DDHAL_CREATESURFACEDATA mDdCreateSurface;
if (pUnkOuter!=NULL) if (pUnkOuter!=NULL)
{ {
@ -246,26 +248,55 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE
DX_STUB_str("pDDSD->dwFlags ok"); DX_STUB_str("pDDSD->dwFlags ok");
/* own code now */ /* own code now */
mDdCanCreateSurface.lpDD = This->lpLcl->lpGbl;
mDdCanCreateSurface.bIsDifferentPixelFormat = FALSE;
mDdCanCreateSurface.lpDDSurfaceDesc = (LPDDSURFACEDESC) pDDSD;
mDdCanCreateSurface.CanCreateSurface = This->lpLcl->lpDDCB->cbDDCallbacks.CanCreateSurface;
mDdCanCreateSurface.ddRVal = DDERR_GENERIC;
mDdCreateSurface.CreateSurface = This->lpLcl->lpDDCB->cbDDCallbacks.CreateSurface;
mDdCreateSurface.ddRVal = DDERR_GENERIC;
mDdCreateSurface.dwSCnt = That->dwIntRefCnt + 1; // is this correct
mDdCreateSurface.lpDDSurfaceDesc = (LPDDSURFACEDESC) pDDSD;
//mDdCreateSurface.lplpSList = That->lpLcl->lpSurfMore->slist;
mDdCreateSurface.lplpSList = &That->lpLcl;
if (pDDSD->ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) if (pDDSD->ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE)
{ {
/* we only create one surface it is primary */ /* we only create one surface it is primary */
//LPDDRAWI_DDRAWSURFACE_LCL surf; //LPDDRAWI_DDRAWSURFACE_LCL surf;
DX_STUB_str( "Can not create primary surface well yet"); DX_STUB_str( "Can not create primary surface well yet");
if (mDdCanCreateSurface.CanCreateSurface(&mDdCanCreateSurface) == DDHAL_DRIVER_NOTHANDLED)
if (That == NULL) {
{ DX_STUB_str( "Can not create surface ");
return E_OUTOFMEMORY; return DDERR_NOTINITIALIZED;
} }
// This->lpLcl->lpDDCB->cbDDCallbacks.CanCreateSurface(); if (mDdCanCreateSurface.ddRVal != DD_OK)
// This->lpLcl->lpDDCB->cbDDCallbacks.CreateSurface(); {
DX_STUB_str( "Fail");
return mDdCanCreateSurface.ddRVal;
}
DX_STUB_str( "Can not create primary surface well yet");
if (mDdCreateSurface.CreateSurface(&mDdCreateSurface) == DDHAL_DRIVER_NOTHANDLED)
{
DX_STUB_str( "Can not create surface fail");
return DDERR_NOTINITIALIZED;
}
DX_STUB_str( "Can not create primary surface well yet");
Main_DirectDraw_AddRef((LPDIRECTDRAW7)This); Main_DirectDraw_AddRef((LPDIRECTDRAW7)This);
Main_DDrawSurface_AddRef((LPDIRECTDRAWSURFACE7)That); Main_DDrawSurface_AddRef((LPDIRECTDRAWSURFACE7)That);
return DD_OK; return mDdCreateSurface.ddRVal;
} }
else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_OVERLAY) else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_OVERLAY)