Author: greatlrd
Date: Fri Mar 23 15:47:19 2007
New Revision: 26157
URL:
http://svn.reactos.org/svn/reactos?rev=26157&view=rev
Log:
Thank CodeMercenary (CodeMercenary at hotmail dot com) that provide ms ddk example driver
code is wrong for how to write a graphice driver with dx support. he gave me input and
provide the ddk example code is wrong.
Now I change the desgin after correct infomations
so it lead to even less overhead of code.
Modified:
trunk/reactos/subsystems/win32/win32k/ntddraw/dd.c
Modified: trunk/reactos/subsystems/win32/win32k/ntddraw/dd.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/nt…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntddraw/dd.c (original)
+++ trunk/reactos/subsystems/win32/win32k/ntddraw/dd.c Fri Mar 23 15:47:19 2007
@@ -206,66 +206,37 @@
pLocal = &phsurface->Local;
pMore = &phsurface->More;
pGlobal = &phsurface->Global;
+
/* FIXME we only support one surface for now */
phsurface->CreateSurfaceData.dwSCnt = 1;
-
- phsurface->lcllist[0] = 0;
- phsurface->lcllist[1] = 0;
+ for (i = 0; i < phsurface->CreateSurfaceData.dwSCnt; i++)
+ {
+ phsurface->lcllist[i] = (PDD_SURFACE_LOCAL)pLocal;
+ pLocal->lpGbl = pGlobal;
+ pLocal->lpSurfMore = pMore;
+
+ /* FIXME ?
+ pLocal->lpAttachList;
+ pLocal->lpAttachListFrom;
+ */
+
+ /* FIXME a countup to next pLocal, pMore, pGlobal */
+
+ }
+
+
+ /* FIXME support for more that one surface */
+
+ /* setup DD_CREATESURFACEDATA CreateSurfaceData for the driver */
phsurface->CreateSurfaceData.lplpSList = (PDD_SURFACE_LOCAL *)
&phsurface->lcllist;
-
- i = 0;
- // for (i = 0; i < phsurface->CreateSurfaceData.dwSCnt; i++)
- //{
- phsurface->lcl.hDDSurface = (ULONG_PTR)myhSurface[i];
- phsurface->lcl.ddsCaps.dwCaps = pLocal->ddsCaps.dwCaps;
- phsurface->lcl.dwFlags =pLocal->dwFlags;
-
- phsurface->gpl.wWidth = pGlobal->wWidth;
- phsurface->gpl.wHeight = pGlobal->wHeight;
- phsurface->gpl.lPitch = pGlobal->lPitch;
- phsurface->gpl.fpVidMem = pGlobal->fpVidMem;
- phsurface->gpl.dwBlockSizeX = pGlobal->dwBlockSizeX;
- phsurface->gpl.dwBlockSizeY = pGlobal->dwBlockSizeY;
- RtlCopyMemory( &phsurface->gpl.ddpfSurface , &pGlobal->ddpfSurface,
sizeof(DDPIXELFORMAT));
-
- /* FIXME more ?? */
- if (pMore)
- {
- phsurface->more.ddsCapsEx.dwCaps2 = pMore->ddsCapsEx.dwCaps2;
- phsurface->more.ddsCapsEx.dwCaps3 = pMore->ddsCapsEx.dwCaps3;
- phsurface->more.ddsCapsEx.dwCaps4 = pMore->ddsCapsEx.dwCaps4;
- phsurface->lcl.dbnOverlayNode.object_int =
(LPDDRAWI_DDRAWSURFACE_INT)pMore->dwSurfaceHandle;
- }
-
- phsurface->lcllist[0] = (PDD_SURFACE_LOCAL)&phsurface->lcl;
- /* FIXME count up everthing to next position */
- // }
-
-
- /* FIXME support for more that one surface */
-
- DPRINT1("setup CreateSurfaceData \n");
- /* setup DD_CREATESURFACEDATA CreateSurfaceData for the driver */
- phsurface->lcl.lpGbl = &phsurface->gpl;
- phsurface->lcl.lpSurfMore = &phsurface->more;
-
- /* FIXME all phsurface->lcl should be in a array then add to lplpSList */
- //phsurface->CreateSurfaceData.lplpSList = (PDD_SURFACE_LOCAL
*)&phsurface->lcl;
phsurface->CreateSurfaceData.lpDDSurfaceDesc = &phsurface->desc;
phsurface->CreateSurfaceData.CreateSurface = NULL;
phsurface->CreateSurfaceData.ddRVal = DDERR_GENERIC;
phsurface->CreateSurfaceData.lpDD = &pDirectDraw->Global;
- /* is this correct the 3d drv whant this data */
- // phsurface->lcl.lpGbl->lpDD = &pDirectDraw->Global;
-
-
-
-
/* the CreateSurface crash with lcl convering */
- DPRINT1("DDHAL_CB32_CREATESURFACE\n");
if ((pDirectDraw->DD.dwFlags & DDHAL_CB32_CREATESURFACE))
{
DPRINT1("0x%04x",pDirectDraw->DD.CreateSurface);