mirror of
https://github.com/reactos/reactos.git
synced 2025-05-28 13:38:19 +00:00
create backbuffer works, left todo is to implement getattach surface.
svn path=/trunk/; revision=25164
This commit is contained in:
parent
23153cc3cf
commit
662f1546cf
3 changed files with 30 additions and 9 deletions
|
@ -6,8 +6,11 @@ CreateBackBufferSurface(LPDDRAWI_DIRECTDRAW_INT This,
|
|||
LPDDRAWI_DDRAWSURFACE_INT That,
|
||||
LPDDSURFACEDESC2 pDDSD)
|
||||
{
|
||||
DDHAL_CANCREATESURFACEDATA mDdCanCreateSurface;
|
||||
DDHAL_CREATESURFACEDATA mDdCreateSurface;
|
||||
DWORD t;
|
||||
|
||||
|
||||
/* we are building the backbuffersurface pointer list
|
||||
* and create the backbuffer surface and set it up
|
||||
*/
|
||||
|
@ -44,7 +47,7 @@ CreateBackBufferSurface(LPDDRAWI_DIRECTDRAW_INT This,
|
|||
return DDERR_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
memcpy(That->lpLcl->lpGbl, &ddSurfGbl,sizeof(DDRAWI_DDRAWSURFACE_GBL);
|
||||
memcpy(That->lpLcl->lpGbl, &ddSurfGbl,sizeof(DDRAWI_DDRAWSURFACE_GBL));
|
||||
That->lpVtbl = &DirectDrawSurface7_Vtable;
|
||||
That->lpLcl->lpSurfMore->dwSize = sizeof(DDRAWI_DDRAWSURFACE_MORE);
|
||||
That->lpLcl->lpSurfMore->lpDD_int = This;
|
||||
|
@ -112,7 +115,13 @@ CreateBackBufferSurface(LPDDRAWI_DIRECTDRAW_INT This,
|
|||
return mDdCreateSurface.ddRVal;
|
||||
}
|
||||
|
||||
This->lpLcl->lpGbl->dsList[t] = That;
|
||||
}
|
||||
/* Build the linking buffer */
|
||||
if (This->lpLcl->lpGbl->dsList != NULL)
|
||||
{
|
||||
This->lpLink = This->lpLcl->lpGbl->dsList;
|
||||
}
|
||||
This->lpLcl->lpGbl->dsList = That;
|
||||
|
||||
}
|
||||
return DD_OK;
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
<file>main.c</file>
|
||||
<file>startup.c</file>
|
||||
<file>cleanup.c</file>
|
||||
<file>createsurface.c</file>
|
||||
|
||||
<file>iface_clipper.c</file>
|
||||
<file>iface_color.c</file>
|
||||
|
|
|
@ -167,9 +167,9 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE
|
|||
{
|
||||
|
||||
LPDDRAWI_DIRECTDRAW_INT This = (LPDDRAWI_DIRECTDRAW_INT)iface;
|
||||
LPDDRAWI_DDRAWSURFACE_INT That;
|
||||
LPDDRAWI_DDRAWSURFACE_INT That = NULL;
|
||||
DDHAL_CANCREATESURFACEDATA mDdCanCreateSurface;
|
||||
DDHAL_CREATESURFACEDATA mDdCreateSurface;
|
||||
DDHAL_CREATESURFACEDATA mDdCreateSurface;
|
||||
|
||||
if (pUnkOuter!=NULL)
|
||||
{
|
||||
|
@ -236,6 +236,8 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE
|
|||
|
||||
if (pDDSD->dwFlags & DDSD_BACKBUFFERCOUNT)
|
||||
{
|
||||
HRESULT retValue;
|
||||
|
||||
if (! pDDSD->ddsCaps.dwCaps & (DDSCAPS_FLIP | DDSCAPS_COMPLEX))
|
||||
{
|
||||
return DDERR_INVALIDPARAMS;
|
||||
|
@ -243,11 +245,20 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE
|
|||
|
||||
if (pDDSD->dwBackBufferCount != 0)
|
||||
{
|
||||
This->lpLcl->lpGbl->dsList = DxHeapMemAlloc(sizeof(DDRAWI_DIRECTDRAW_INT) *
|
||||
pDDSD->dwBackBufferCount);
|
||||
This->lpLcl->lpGbl->dsList = NULL;
|
||||
//DxHeapMemAlloc(sizeof(DDRAWI_DIRECTDRAW_INT));
|
||||
}
|
||||
else
|
||||
{
|
||||
return DDERR_INVALIDSURFACETYPE;
|
||||
}
|
||||
|
||||
// CreateBackBufferSurface(This,That,pDDSD);
|
||||
retValue = CreateBackBufferSurface(This,That,pDDSD);
|
||||
if (retValue != DD_OK)
|
||||
{
|
||||
DX_STUB_str( "Fail to create backbuffer surface");
|
||||
return retValue;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -819,7 +830,7 @@ Main_DirectDraw_SetCooperativeLevel (LPDIRECTDRAW7 iface, HWND hwnd, DWORD coopl
|
|||
|
||||
/* This code should be a callback */
|
||||
This->lpLcl->hWnd = hwnd;
|
||||
This->lpLcl->hFocusWnd = hwnd;
|
||||
This->lpLcl->hFocusWnd = hwnd;
|
||||
ReCreateDirectDraw((LPDIRECTDRAW*)iface);
|
||||
|
||||
// TODO:
|
||||
|
|
Loading…
Reference in a new issue