mirror of
https://github.com/reactos/reactos.git
synced 2025-05-30 22:49:12 +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,
|
LPDDRAWI_DDRAWSURFACE_INT That,
|
||||||
LPDDSURFACEDESC2 pDDSD)
|
LPDDSURFACEDESC2 pDDSD)
|
||||||
{
|
{
|
||||||
|
DDHAL_CANCREATESURFACEDATA mDdCanCreateSurface;
|
||||||
|
DDHAL_CREATESURFACEDATA mDdCreateSurface;
|
||||||
DWORD t;
|
DWORD t;
|
||||||
|
|
||||||
|
|
||||||
/* we are building the backbuffersurface pointer list
|
/* we are building the backbuffersurface pointer list
|
||||||
* and create the backbuffer surface and set it up
|
* and create the backbuffer surface and set it up
|
||||||
*/
|
*/
|
||||||
|
@ -44,7 +47,7 @@ CreateBackBufferSurface(LPDDRAWI_DIRECTDRAW_INT This,
|
||||||
return DDERR_OUTOFMEMORY;
|
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->lpVtbl = &DirectDrawSurface7_Vtable;
|
||||||
That->lpLcl->lpSurfMore->dwSize = sizeof(DDRAWI_DDRAWSURFACE_MORE);
|
That->lpLcl->lpSurfMore->dwSize = sizeof(DDRAWI_DDRAWSURFACE_MORE);
|
||||||
That->lpLcl->lpSurfMore->lpDD_int = This;
|
That->lpLcl->lpSurfMore->lpDD_int = This;
|
||||||
|
@ -112,7 +115,13 @@ CreateBackBufferSurface(LPDDRAWI_DIRECTDRAW_INT This,
|
||||||
return mDdCreateSurface.ddRVal;
|
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>main.c</file>
|
||||||
<file>startup.c</file>
|
<file>startup.c</file>
|
||||||
<file>cleanup.c</file>
|
<file>cleanup.c</file>
|
||||||
|
<file>createsurface.c</file>
|
||||||
|
|
||||||
<file>iface_clipper.c</file>
|
<file>iface_clipper.c</file>
|
||||||
<file>iface_color.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_DIRECTDRAW_INT This = (LPDDRAWI_DIRECTDRAW_INT)iface;
|
||||||
LPDDRAWI_DDRAWSURFACE_INT That;
|
LPDDRAWI_DDRAWSURFACE_INT That = NULL;
|
||||||
DDHAL_CANCREATESURFACEDATA mDdCanCreateSurface;
|
DDHAL_CANCREATESURFACEDATA mDdCanCreateSurface;
|
||||||
DDHAL_CREATESURFACEDATA mDdCreateSurface;
|
DDHAL_CREATESURFACEDATA mDdCreateSurface;
|
||||||
|
|
||||||
if (pUnkOuter!=NULL)
|
if (pUnkOuter!=NULL)
|
||||||
{
|
{
|
||||||
|
@ -236,6 +236,8 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE
|
||||||
|
|
||||||
if (pDDSD->dwFlags & DDSD_BACKBUFFERCOUNT)
|
if (pDDSD->dwFlags & DDSD_BACKBUFFERCOUNT)
|
||||||
{
|
{
|
||||||
|
HRESULT retValue;
|
||||||
|
|
||||||
if (! pDDSD->ddsCaps.dwCaps & (DDSCAPS_FLIP | DDSCAPS_COMPLEX))
|
if (! pDDSD->ddsCaps.dwCaps & (DDSCAPS_FLIP | DDSCAPS_COMPLEX))
|
||||||
{
|
{
|
||||||
return DDERR_INVALIDPARAMS;
|
return DDERR_INVALIDPARAMS;
|
||||||
|
@ -243,11 +245,20 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE
|
||||||
|
|
||||||
if (pDDSD->dwBackBufferCount != 0)
|
if (pDDSD->dwBackBufferCount != 0)
|
||||||
{
|
{
|
||||||
This->lpLcl->lpGbl->dsList = DxHeapMemAlloc(sizeof(DDRAWI_DIRECTDRAW_INT) *
|
This->lpLcl->lpGbl->dsList = NULL;
|
||||||
pDDSD->dwBackBufferCount);
|
//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 code should be a callback */
|
||||||
This->lpLcl->hWnd = hwnd;
|
This->lpLcl->hWnd = hwnd;
|
||||||
This->lpLcl->hFocusWnd = hwnd;
|
This->lpLcl->hFocusWnd = hwnd;
|
||||||
ReCreateDirectDraw((LPDIRECTDRAW*)iface);
|
ReCreateDirectDraw((LPDIRECTDRAW*)iface);
|
||||||
|
|
||||||
// TODO:
|
// TODO:
|
||||||
|
|
Loading…
Reference in a new issue