[ros-diffs] [greatlrd] 25105: remove most of the hack in createsurface

greatlrd at svn.reactos.org greatlrd at svn.reactos.org
Sat Dec 9 22:41:43 CET 2006


Author: greatlrd
Date: Sun Dec 10 00:41:42 2006
New Revision: 25105

URL: http://svn.reactos.org/svn/reactos?rev=25105&view=rev
Log:
remove most of the hack in createsurface

Modified:
    trunk/reactos/dll/directx/ddraw/main/ddraw_main.c

Modified: trunk/reactos/dll/directx/ddraw/main/ddraw_main.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/main/ddraw_main.c?rev=25105&r1=25104&r2=25105&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/main/ddraw_main.c (original)
+++ trunk/reactos/dll/directx/ddraw/main/ddraw_main.c Sun Dec 10 00:41:42 2006
@@ -205,59 +205,41 @@
 	}
 
 	That->lpLcl = (LPDDRAWI_DDRAWSURFACE_LCL)DxHeapMemAlloc(sizeof(DDRAWI_DDRAWSURFACE_LCL));
-    This->lpLcl->lpPrimary = That;
-
+   
     if (That == NULL) 
 	{
         return E_OUTOFMEMORY;
 	}
 
+	SurfaceMore =  DxHeapMemAlloc(sizeof(DDRAWI_DDRAWSURFACE_MORE));
+	if (SurfaceMore == NULL)
+	{
+		return DDERR_OUTOFMEMORY;
+	}
+	
     That->lpVtbl = &DirectDrawSurface7_Vtable;
 	*ppSurf = (LPDIRECTDRAWSURFACE7)That;
 
+	
 	That->lpLcl->lpGbl = &ddSurfGbl;
 	That->lpLcl->lpGbl->lpDD = &ddgbl;
-
-		
-	/* Code from wine cvs 24/7-2006 */
-
-	if (!(pDDSD->dwFlags & DDSD_CAPS))
-    {
-        /* DVIDEO.DLL does forget the DDSD_CAPS flag ... *sigh* */
-        pDDSD->dwFlags |= DDSD_CAPS;
-    }
-    if (pDDSD->ddsCaps.dwCaps == 0)
-    {
-        /* This has been checked on real Windows */
-        pDDSD->ddsCaps.dwCaps = DDSCAPS_LOCALVIDMEM | DDSCAPS_VIDEOMEMORY;
-    }
-
-	
-    if (pDDSD->ddsCaps.dwCaps & DDSCAPS_ALLOCONLOAD)
-    {
-        /* If the surface is of the 'alloconload' type, ignore the LPSURFACE field */
-        pDDSD->dwFlags &= ~DDSD_LPSURFACE;
-    }
-
-	DX_STUB_str("pDDSD->ddsCaps.dwCaps ok");
-
-    if ((pDDSD->dwFlags & DDSD_LPSURFACE) && (pDDSD->lpSurface == NULL))
-    {
-        /* Frank Herbert's Dune specifies a null pointer for the surface, ignore the LPSURFACE field */       
-        pDDSD->dwFlags &= ~DDSD_LPSURFACE;
-    }
-
-	DX_STUB_str("pDDSD->dwFlags ok");
-
-	/* own code now */  
-	
+	That->lpLcl->lpSurfMore = SurfaceMore;
+	That->lpLcl->lpSurfMore->dwSize = sizeof(DDRAWI_DDRAWSURFACE_MORE);
+	That->lpLcl->lpSurfMore->lpDD_int = This;
+	That->lpLcl->lpSurfMore->lpDD_lcl = This->lpLcl;
+	That->lpLcl->dwProcessId = GetCurrentProcessId();
+
+	/* this two line should be move to startup code */
+    That->lpLcl->lpGbl->lpDD       =  This->lpLcl->lpGbl;
+    That->lpLcl->lpGbl->lpDDHandle = This->lpLcl->lpGbl;
 
 	mDdCanCreateSurface.lpDD = This->lpLcl->lpGbl;
-	mDdCanCreateSurface.bIsDifferentPixelFormat = FALSE;
+	mDdCanCreateSurface.bIsDifferentPixelFormat = FALSE; //isDifferentPixelFormat;
 	mDdCanCreateSurface.lpDDSurfaceDesc = (LPDDSURFACEDESC) pDDSD;
 	mDdCanCreateSurface.CanCreateSurface = This->lpLcl->lpDDCB->cbDDCallbacks.CanCreateSurface;
 	mDdCanCreateSurface.ddRVal = DDERR_GENERIC;
 
+	mDdCreateSurface.lpDD = This->lpLcl->lpGbl;
 	mDdCreateSurface.CreateSurface = This->lpLcl->lpDDCB->cbDDCallbacks.CreateSurface;
 	mDdCreateSurface.ddRVal =  DDERR_GENERIC;
 	mDdCreateSurface.dwSCnt = That->dwIntRefCnt + 1; // is this correct 
@@ -265,30 +247,13 @@
 	//mDdCreateSurface.lplpSList = That->lpLcl->lpSurfMore->slist;
 	//mDdCreateSurface.lplpSList = &That->lpLcl;
 		
-	SurfaceMore =  DxHeapMemAlloc(sizeof(DDRAWI_DDRAWSURFACE_MORE));
-	if (SurfaceMore == NULL)
-	{
-		return DDERR_OUTOFMEMORY;
-	}
-
     if (pDDSD->ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE)
 	{  
 	   DDRAWI_DDRAWSURFACE_LCL *mpPrimaryLocals[1];
-       DDSURFACEDESC mddsdPrimary;
-
-	   This->lpLcl->lpGbl->lp16DD = This->lpLcl->lpGbl;   
-       That->lpLcl->lpSurfMore = SurfaceMore;
-
-       ZeroMemory(&mddsdPrimary, sizeof(DDSURFACEDESC));
-       mddsdPrimary.dwSize      = sizeof(DDSURFACEDESC);
-       mddsdPrimary.dwFlags     = DDSD_CAPS;
-       mddsdPrimary.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_VIDEOMEMORY | DDSCAPS_VISIBLE;
        
-       mDdCanCreateSurface.lpDD = This->lpLcl->lpGbl;
-       mDdCanCreateSurface.CanCreateSurface = This->lpLcl->lpDDCB->HALDD.CanCreateSurface;
-       mDdCanCreateSurface.bIsDifferentPixelFormat = FALSE; //isDifferentPixelFormat;
-       mDdCanCreateSurface.lpDDSurfaceDesc = &mddsdPrimary; // pDDSD;
-      
+	   This->lpLcl->lpPrimary = That;
+	   That->lpLcl->lpSurfMore->slist = mpPrimaryLocals;
+                                                         
        if (mDdCanCreateSurface.CanCreateSurface(&mDdCanCreateSurface)== DDHAL_DRIVER_NOTHANDLED) 
        {   
            return DDERR_NOTINITIALIZED;
@@ -298,31 +263,21 @@
        {
            return DDERR_NOTINITIALIZED;
        }
-    
-       That->lpLcl->lpGbl->dwGlobalFlags = DDRAWISURFGBL_ISGDISURFACE;
-       That->lpLcl->lpGbl->lpDD       =  This->lpLcl->lpGbl;
-       That->lpLcl->lpGbl->lpDDHandle = This->lpLcl->lpGbl;
+          
+       /* FIXME :
+	    * This tree line is hack 
+		*/ 
        That->lpLcl->lpGbl->wWidth  = 1024; //(WORD)mpModeInfos[0].dwWidth;
        That->lpLcl->lpGbl->wHeight = 768; //(WORD)mpModeInfos[0].dwHeight;
        That->lpLcl->lpGbl->lPitch  = 32; //mpModeInfos[0].lPitch;
-
-       memset(SurfaceMore,   0, sizeof(DDRAWI_DDRAWSURFACE_MORE));
-       SurfaceMore->dwSize = sizeof(DDRAWI_DDRAWSURFACE_MORE);
-  
-       That->lpLcl->lpGbl = That->lpLcl->lpGbl;
-       That->lpLcl->lpSurfMore = SurfaceMore;
-       That->lpLcl->dwProcessId = GetCurrentProcessId();
+                   
        That->lpLcl->dwFlags = DDRAWISURF_PARTOFPRIMARYCHAIN|DDRAWISURF_HASOVERLAYDATA;
-       That->lpLcl->ddsCaps.dwCaps = mddsdPrimary.ddsCaps.dwCaps;
+       That->lpLcl->ddsCaps.dwCaps = pDDSD->ddsCaps.dwCaps;
 
        mpPrimaryLocals[0] = That->lpLcl;
-  
-       mDdCreateSurface.lpDD = This->lpLcl->lpGbl;
-       mDdCreateSurface.CreateSurface = This->lpLcl->lpDDCB->HALDD.CreateSurface;  
-       mDdCreateSurface.lpDDSurfaceDesc = &mddsdPrimary;//pDDSD;
-       mDdCreateSurface.lplpSList = mpPrimaryLocals; //cSurfaces;
-       mDdCreateSurface.dwSCnt = 1 ;  //ppSurfaces;
-
+                       
+       mDdCreateSurface.lplpSList = That->lpLcl->lpSurfMore->slist;
+     
        if (mDdCreateSurface.CreateSurface(&mDdCreateSurface) == DDHAL_DRIVER_NOTHANDLED)
        {
 	       return DDERR_NOTINITIALIZED;




More information about the Ros-diffs mailing list