From fdcc54dc695fed75499cc92bb4a64c2923440ba4 Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Tue, 18 Jul 2006 23:56:48 +0000 Subject: [PATCH] framebuf Implement DdCreateSurface not tested. Bugfix the prototyped. svn path=/trunk/; revision=23162 --- reactos/drivers/video/displays/framebuf/dd.c | 46 +++++++++++++++++-- .../video/displays/framebuf/framebuf.h | 2 +- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/reactos/drivers/video/displays/framebuf/dd.c b/reactos/drivers/video/displays/framebuf/dd.c index 78c33d9df7b..dc1df50b614 100644 --- a/reactos/drivers/video/displays/framebuf/dd.c +++ b/reactos/drivers/video/displays/framebuf/dd.c @@ -68,9 +68,49 @@ DdCanCreateSurface(LPDDHAL_CANCREATESURFACEDATA pccsd) } DWORD CALLBACK -DdCreateSurface(PDD_CREATESURFACEDATA lpCreateSurface) +DdCreateSurface(LPDDHAL_CREATESURFACEDATA pcsd) { - lpCreateSurface->ddRVal = DDERR_GENERIC; - return DDHAL_DRIVER_NOTHANDLED; + int i; + + if (pcsd->dwSCnt == 1) + { + pcsd->ddRVal = DDERR_GENERIC; + return DDHAL_DRIVER_NOTHANDLED; + } + + + for (i=0; i<(int)pcsd->dwSCnt; i++) + { + pcsd->lplpSList[i]->lpGbl->lPitch = (DWORD)(pcsd->lplpSList[i]->lpGbl->wWidth * + (pcsd->lplpSList[i]->lpGbl->ddpfSurface.dwRGBBitCount / 8)); + + pcsd->lplpSList[i]->lpGbl->dwBlockSizeX = pcsd->lplpSList[i]->lpGbl->lPitch * + (DWORD)(pcsd->lplpSList[i]->lpGbl->wHeight); + + pcsd->lplpSList[i]->lpGbl->dwBlockSizeY = 1; + + if ( pcsd->lplpSList[i] ->ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) + { + /* We maybe should alloc it with EngAlloc + for now we trusting ddraw alloc it */ + pcsd->lplpSList[i]->lpGbl->fpVidMem = 0; + } + else + { + + /* We maybe should alloc it with EngAlloc + for now we trusting ddraw alloc it */ + pcsd->lplpSList[i]->lpGbl->fpVidMem = DDHAL_PLEASEALLOC_BLOCKSIZE; + } + + pcsd->lpDDSurfaceDesc->lPitch = pcsd->lplpSList[i]->lpGbl->lPitch; + pcsd->lpDDSurfaceDesc->dwFlags |= DDSD_PITCH; + + } // for i + + + + pcsd->ddRVal = DD_OK; + return DDHAL_DRIVER_HANDLED; } diff --git a/reactos/drivers/video/displays/framebuf/framebuf.h b/reactos/drivers/video/displays/framebuf/framebuf.h index e8d6c680c83..729d536b559 100644 --- a/reactos/drivers/video/displays/framebuf/framebuf.h +++ b/reactos/drivers/video/displays/framebuf/framebuf.h @@ -82,7 +82,7 @@ DWORD CALLBACK DdCanCreateSurface( LPDDHAL_CANCREATESURFACEDATA pccsd ); DWORD CALLBACK -DdCreateSurface(PDD_CREATESURFACEDATA lpCreateSurface); +DdCreateSurface(LPDDHAL_CREATESURFACEDATA pcsd); VOID STDCALL DrvDisableDirectDraw(