mirror of
https://github.com/reactos/reactos.git
synced 2024-08-02 17:40:58 +00:00
Implement Surface_GetDC
svn path=/trunk/; revision=21516
This commit is contained in:
parent
d574bdb7c7
commit
988d7a9c98
|
@ -69,10 +69,13 @@ HRESULT Hal_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDS
|
||||||
That->Surf->mPrimaryLocal.ddsCaps.dwCaps = That->Surf->mddsdPrimary.ddsCaps.dwCaps;
|
That->Surf->mPrimaryLocal.ddsCaps.dwCaps = That->Surf->mddsdPrimary.ddsCaps.dwCaps;
|
||||||
That->Surf->mpPrimaryLocals[0] = &That->Surf->mPrimaryLocal;
|
That->Surf->mpPrimaryLocals[0] = &That->Surf->mPrimaryLocal;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
mDdCreateSurface.lpDDSurfaceDesc = &That->Surf->mddsdPrimary;
|
mDdCreateSurface.lpDDSurfaceDesc = &That->Surf->mddsdPrimary;
|
||||||
mDdCreateSurface.lplpSList = That->Surf->mpPrimaryLocals;
|
mDdCreateSurface.lplpSList = That->Surf->mpPrimaryLocals;
|
||||||
mDdCreateSurface.dwSCnt = This->mDDrawGlobal.dsList->dwIntRefCnt ;
|
mDdCreateSurface.dwSCnt = This->mDDrawGlobal.dsList->dwIntRefCnt ;
|
||||||
|
|
||||||
|
|
||||||
if (This->mHALInfo.lpDDCallbacks->CreateSurface(&mDdCreateSurface) == DDHAL_DRIVER_NOTHANDLED)
|
if (This->mHALInfo.lpDDCallbacks->CreateSurface(&mDdCreateSurface) == DDHAL_DRIVER_NOTHANDLED)
|
||||||
{
|
{
|
||||||
return DDERR_NOTINITIALIZED;
|
return DDERR_NOTINITIALIZED;
|
||||||
|
@ -82,12 +85,15 @@ HRESULT Hal_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDS
|
||||||
{
|
{
|
||||||
return mDdCreateSurface.ddRVal;
|
return mDdCreateSurface.ddRVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return DD_OK;
|
return DD_OK;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_OVERLAY)
|
else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_OVERLAY)
|
||||||
{
|
{
|
||||||
|
DX_STUB_str( "Can not create overlay surface");
|
||||||
////memset(&This->mddsdOverlay, 0, sizeof(DDSURFACEDESC));
|
////memset(&This->mddsdOverlay, 0, sizeof(DDSURFACEDESC));
|
||||||
//memcpy(&This->mddsdOverlay,pDDSD,sizeof(DDSURFACEDESC));
|
//memcpy(&This->mddsdOverlay,pDDSD,sizeof(DDSURFACEDESC));
|
||||||
//This->mddsdOverlay.dwSize = sizeof(DDSURFACEDESC);
|
//This->mddsdOverlay.dwSize = sizeof(DDSURFACEDESC);
|
||||||
|
@ -208,19 +214,19 @@ HRESULT Hal_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDS
|
||||||
}
|
}
|
||||||
else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_BACKBUFFER)
|
else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_BACKBUFFER)
|
||||||
{
|
{
|
||||||
DX_STUB;
|
DX_STUB_str( "Can not create backbuffer surface");
|
||||||
}
|
}
|
||||||
else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_TEXTURE)
|
else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_TEXTURE)
|
||||||
{
|
{
|
||||||
DX_STUB;
|
DX_STUB_str( "Can not create texture surface");
|
||||||
}
|
}
|
||||||
else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_ZBUFFER)
|
else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_ZBUFFER)
|
||||||
{
|
{
|
||||||
DX_STUB;
|
DX_STUB_str( "Can not create zbuffer surface");
|
||||||
}
|
}
|
||||||
else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_OFFSCREENPLAIN)
|
else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_OFFSCREENPLAIN)
|
||||||
{
|
{
|
||||||
DX_STUB;
|
DX_STUB_str( "Can not create offscreenplain surface");
|
||||||
}
|
}
|
||||||
|
|
||||||
return DDERR_INVALIDSURFACETYPE;
|
return DDERR_INVALIDSURFACETYPE;
|
||||||
|
@ -289,6 +295,7 @@ HRESULT Hal_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7 iface, LPRECT rDest,
|
||||||
// This->Surf->mpPrimaryLocals[0]->hDC = This->owner->mDDrawGlobal.lpExclusiveOwner->hDC;
|
// This->Surf->mpPrimaryLocals[0]->hDC = This->owner->mDDrawGlobal.lpExclusiveOwner->hDC;
|
||||||
|
|
||||||
// FIXME dectect if it clipped or not
|
// FIXME dectect if it clipped or not
|
||||||
|
DX_STUB_str( "Can not create offscreenplain surface");
|
||||||
mDdBlt.IsClipped = FALSE;
|
mDdBlt.IsClipped = FALSE;
|
||||||
|
|
||||||
if (mDdBlt.Blt(&mDdBlt) != DDHAL_DRIVER_HANDLED)
|
if (mDdBlt.Blt(&mDdBlt) != DDHAL_DRIVER_HANDLED)
|
||||||
|
@ -304,3 +311,9 @@ HRESULT Hal_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7 iface, LPRECT rDest,
|
||||||
|
|
||||||
return DD_OK;
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT Hal_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURFACEDESC2
|
||||||
|
pDDSD, DWORD flags, HANDLE event)
|
||||||
|
{
|
||||||
|
DX_STUB;
|
||||||
|
}
|
||||||
|
|
|
@ -61,16 +61,15 @@ HRESULT WINAPI Main_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7 iface, LPRECT rdst,
|
||||||
|
|
||||||
HRESULT WINAPI Main_DDrawSurface_Lock (LPDIRECTDRAWSURFACE7 iface, LPRECT prect,
|
HRESULT WINAPI Main_DDrawSurface_Lock (LPDIRECTDRAWSURFACE7 iface, LPRECT prect,
|
||||||
LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE event)
|
LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE event)
|
||||||
{ /*
|
{
|
||||||
IDirectDrawSurfaceImpl* That = (IDirectDrawSurfaceImpl*)iface;
|
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
|
||||||
|
|
||||||
if (This->mDDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_CREATESURFACE)
|
if (This->owner->mDDrawGlobal.lpDDCBtmp->HALDD.dwFlags & DDHAL_CB32_CREATESURFACE)
|
||||||
{
|
{
|
||||||
return Hal_DDrawSurface_Lock( iiface, LPRECT prect, pDDSD, flags, event);
|
return Hal_DDrawSurface_Lock( iface, prect, pDDSD, flags, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Hel_DDrawSurface_Lock( iiface, LPRECT prect, pDDSD, flags, event);*/
|
return Hel_DDrawSurface_Lock( iface, prect, pDDSD, flags, event);
|
||||||
DX_STUB;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI Main_DDrawSurface_Unlock (LPDIRECTDRAWSURFACE7 iface, LPRECT pRect)
|
HRESULT WINAPI Main_DDrawSurface_Unlock (LPDIRECTDRAWSURFACE7 iface, LPRECT pRect)
|
||||||
|
@ -224,7 +223,30 @@ Main_DDrawSurface_GetColorKey(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags,
|
||||||
HRESULT WINAPI
|
HRESULT WINAPI
|
||||||
Main_DDrawSurface_GetDC(LPDIRECTDRAWSURFACE7 iface, HDC *phDC)
|
Main_DDrawSurface_GetDC(LPDIRECTDRAWSURFACE7 iface, HDC *phDC)
|
||||||
{
|
{
|
||||||
DX_STUB;
|
IDirectDrawSurfaceImpl* This;
|
||||||
|
|
||||||
|
if (iface == NULL)
|
||||||
|
{
|
||||||
|
return DDERR_INVALIDOBJECT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (phDC == NULL)
|
||||||
|
{
|
||||||
|
return DDERR_INVALIDPARAMS;
|
||||||
|
}
|
||||||
|
|
||||||
|
This = (IDirectDrawSurfaceImpl*)iface;
|
||||||
|
|
||||||
|
if ((HDC)This->Surf->mPrimaryLocal.hDC == NULL)
|
||||||
|
{
|
||||||
|
*phDC = (HDC)This->owner->mDDrawGlobal.lpExclusiveOwner->hDC;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*phDC = (HDC)This->Surf->mpPrimaryLocals[0]->hDC;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI
|
HRESULT WINAPI
|
||||||
|
|
|
@ -147,8 +147,11 @@ HRESULT Hal_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 );
|
||||||
HRESULT Hal_DirectDraw_SetDisplayMode (LPDIRECTDRAW7, DWORD, DWORD, DWORD, DWORD, DWORD );
|
HRESULT Hal_DirectDraw_SetDisplayMode (LPDIRECTDRAW7, DWORD, DWORD, DWORD, DWORD, DWORD );
|
||||||
HRESULT Hal_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX );
|
HRESULT Hal_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX );
|
||||||
HRESULT Hal_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD, IDirectDrawSurfaceImpl *ppSurf, IUnknown *pUnkOuter);
|
HRESULT Hal_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD, IDirectDrawSurfaceImpl *ppSurf, IUnknown *pUnkOuter);
|
||||||
|
HRESULT Hal_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE event);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
HRESULT Hel_DirectDraw_Initialize (LPDIRECTDRAW7 );
|
HRESULT Hel_DirectDraw_Initialize (LPDIRECTDRAW7 );
|
||||||
HRESULT Hel_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 );
|
HRESULT Hel_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 );
|
||||||
VOID Hel_DirectDraw_Release (LPDIRECTDRAW7 );
|
VOID Hel_DirectDraw_Release (LPDIRECTDRAW7 );
|
||||||
|
@ -159,6 +162,7 @@ HRESULT Hel_DirectDraw_FlipToGDISurface(LPDIRECTDRAW7 );
|
||||||
HRESULT Hel_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 , DWORD , DWORD ,DWORD , DWORD , DWORD );
|
HRESULT Hel_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 , DWORD , DWORD ,DWORD , DWORD , DWORD );
|
||||||
HRESULT Hel_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX );
|
HRESULT Hel_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7, LPRECT, LPDIRECTDRAWSURFACE7, LPRECT, DWORD, LPDDBLTFX );
|
||||||
HRESULT Hel_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD, LPDIRECTDRAWSURFACE7 *ppSurf, IUnknown *pUnkOuter);
|
HRESULT Hel_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD, LPDIRECTDRAWSURFACE7 *ppSurf, IUnknown *pUnkOuter);
|
||||||
|
HRESULT Hel_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE event);
|
||||||
|
|
||||||
/* Setting for HEL should be move to ros special reg key ? */
|
/* Setting for HEL should be move to ros special reg key ? */
|
||||||
|
|
||||||
|
@ -178,4 +182,14 @@ HRESULT Hel_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDS
|
||||||
} \
|
} \
|
||||||
return DDERR_UNSUPPORTED;
|
return DDERR_UNSUPPORTED;
|
||||||
|
|
||||||
|
#define DX_STUB_str(x) \
|
||||||
|
static BOOL firstcall = TRUE; \
|
||||||
|
if (firstcall) \
|
||||||
|
{ \
|
||||||
|
char buffer[1024]; \
|
||||||
|
sprintf ( buffer, "Function %s %s (%s:%d)\n", __FUNCTION__,x,__FILE__,__LINE__ ); \
|
||||||
|
OutputDebugStringA(buffer); \
|
||||||
|
firstcall = FALSE; \
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* __DDRAW_PRIVATE */
|
#endif /* __DDRAW_PRIVATE */
|
||||||
|
|
|
@ -21,3 +21,12 @@ HRESULT Hel_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7 iface, LPRECT rdst,
|
||||||
{
|
{
|
||||||
DX_STUB;
|
DX_STUB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT Hel_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURFACEDESC2
|
||||||
|
pDDSD, DWORD flags, HANDLE event)
|
||||||
|
{
|
||||||
|
DX_STUB;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue