patch from Kamil Hornicek tykef at atlas dot cz (irc nick : Pigglesworth)

fix one fixme in createsurface.c support more that only dx7 surface in createsurface.c






 

svn path=/trunk/; revision=31189
This commit is contained in:
Magnus Olsen
2007-12-13 02:02:15 +00:00
parent 37b2f521e1
commit 1cdc5e759c
4 changed files with 38 additions and 10 deletions
+9 -1
View File
@@ -30,11 +30,18 @@ Main_DirectDraw_CreatePalette(
LPDIRECTDRAWPALETTE* ppPalette,
LPUNKNOWN pUnkOuter);
HRESULT WINAPI
Main_DirectDraw_CreateSurface(
LPDDRAWI_DIRECTDRAW_INT This,
LPDDSURFACEDESC pDDSD,
LPDDRAWI_DDRAWSURFACE_INT *ppSurf,
IUnknown *pUnkOuter);
HRESULT WINAPI
Main_DirectDraw_CreateSurface4(
LPDDRAWI_DIRECTDRAW_INT This,
LPDDSURFACEDESC2 pDDSD,
LPDIRECTDRAWSURFACE7 *ppSurf,
LPDDRAWI_DDRAWSURFACE_INT *ppSurf,
IUnknown *pUnkOuter);
HRESULT WINAPI
@@ -209,3 +216,4 @@ DWORD CALLBACK HelDdSurfUnlock(LPDDHAL_UNLOCKDATA lpUnLockData);
DWORD CALLBACK HelDdSurfUpdateOverlay(LPDDHAL_UPDATEOVERLAYDATA lpUpDateOveryLayData);
+5 -4
View File
@@ -434,7 +434,7 @@ Main_DirectDraw_GetFourCCCodes(LPDDRAWI_DIRECTDRAW_INT This, LPDWORD lpNumCodes,
/* For DirectDraw 1 - 3 */
HRESULT WINAPI
Main_DirectDraw_CreateSurface (LPDDRAWI_DIRECTDRAW_INT This, LPDDSURFACEDESC pDDSD,
LPDIRECTDRAWSURFACE *ppSurf, IUnknown *pUnkOuter)
LPDDRAWI_DDRAWSURFACE_INT *ppSurf, IUnknown *pUnkOuter)
{
HRESULT ret = DDERR_GENERIC;
DDSURFACEDESC2 dd_desc_v2;
@@ -449,7 +449,7 @@ Main_DirectDraw_CreateSurface (LPDDRAWI_DIRECTDRAW_INT This, LPDDSURFACEDESC pDD
CopyDDSurfDescToDDSurfDesc2(&dd_desc_v2, (LPDDSURFACEDESC)pDDSD);
ret = Internal_CreateSurface(This,
&dd_desc_v2,
(LPDIRECTDRAWSURFACE7 *)ppSurf,
ppSurf,
pUnkOuter);
}
else
@@ -470,14 +470,14 @@ Main_DirectDraw_CreateSurface (LPDDRAWI_DIRECTDRAW_INT This, LPDDSURFACEDESC pDD
/* For DirectDraw 4 - 7 */
HRESULT WINAPI
Main_DirectDraw_CreateSurface4(LPDDRAWI_DIRECTDRAW_INT This, LPDDSURFACEDESC2 pDDSD,
LPDIRECTDRAWSURFACE7 *ppSurf, IUnknown *pUnkOuter)
LPDDRAWI_DDRAWSURFACE_INT *ppSurf, IUnknown *pUnkOuter)
{
HRESULT ret;
DX_WINDBG_trace();
// EnterCriticalSection(&ddcs);
_SEH_TRY
{
ret = Internal_CreateSurface(This, pDDSD, ppSurf,pUnkOuter);
ret = Internal_CreateSurface(This, pDDSD, ppSurf, pUnkOuter);
}
_SEH_HANDLE
{
@@ -499,3 +499,4 @@ Main_DirectDraw_CreateSurface4(LPDDRAWI_DIRECTDRAW_INT This, LPDDSURFACEDESC2 pD
@@ -22,7 +22,7 @@
HRESULT
Internal_CreateSurface( LPDDRAWI_DIRECTDRAW_INT pDDraw, LPDDSURFACEDESC2 pDDSD,
LPDIRECTDRAWSURFACE7 *ppSurf, IUnknown *pUnkOuter)
LPDDRAWI_DDRAWSURFACE_INT *ppSurf, IUnknown *pUnkOuter)
{
DDHAL_CANCREATESURFACEDATA mDdCanCreateSurface = { 0 };
DDHAL_CREATESURFACEDATA mDdCreateSurface = { 0 };
@@ -175,8 +175,26 @@ Internal_CreateSurface( LPDDRAWI_DIRECTDRAW_INT pDDraw, LPDDSURFACEDESC2 pDDSD,
ThisSurfaceGbl->dwLinearSize = pDDSD->lPitch;
}
/* FIXME set right version */
ThisSurfInt->lpVtbl = &DirectDrawSurface7_Vtable;
if(pDDraw->lpVtbl == &DirectDraw7_Vtable)
{
ThisSurfInt->lpVtbl = &DirectDrawSurface7_Vtable;
}
else if(pDDraw->lpVtbl == &DirectDraw4_Vtable)
{
ThisSurfInt->lpVtbl = &DirectDrawSurface4_Vtable;
}
else if(pDDraw->lpVtbl == &DirectDraw2_Vtable)
{
ThisSurfInt->lpVtbl = &DirectDrawSurface2_Vtable;
}
else if(pDDraw->lpVtbl == &DirectDraw_Vtable)
{
ThisSurfInt->lpVtbl = &DirectDrawSurface_Vtable;
}
else
{
return DDERR_NOTINITIALIZED;
}
ThisSurfLcl->lpSurfMore = ThisSurfaceMore;
ThisSurfaceMore->dwSize = sizeof(DDRAWI_DDRAWSURFACE_MORE);
@@ -232,7 +250,7 @@ Internal_CreateSurface( LPDDRAWI_DIRECTDRAW_INT pDDraw, LPDDSURFACEDESC2 pDDSD,
return mDdCreateSurface.ddRVal;
}
*ppSurf = (LPDIRECTDRAWSURFACE7) &slist_int[0]->lpVtbl;
*ppSurf = (LPDDRAWI_DDRAWSURFACE_INT) &slist_int[0]->lpVtbl;
return DD_OK;
}
@@ -248,3 +266,4 @@ void CopyDDSurfDescToDDSurfDesc2(LPDDSURFACEDESC2 dst_pDesc, LPDDSURFACEDESC src
+1 -1
View File
@@ -83,7 +83,7 @@ HRESULT
Internal_CreateSurface(
LPDDRAWI_DIRECTDRAW_INT pDDraw,
LPDDSURFACEDESC2 pDDSD,
LPDIRECTDRAWSURFACE7 *ppSurf,
LPDDRAWI_DDRAWSURFACE_INT *ppSurf,
IUnknown *pUnkOuter);
/* convert DDSURFACEDESC to DDSURFACEDESC2 */