[ros-diffs] [greatlrd] 33249: Fixed the last regress I intdues for loading ms dxg.sys now it works loading again and we come allot futuer with our ddraw.dll. without using hacks.

greatlrd at svn.reactos.org greatlrd at svn.reactos.org
Fri May 2 22:16:03 CEST 2008


Author: greatlrd
Date: Fri May  2 15:16:03 2008
New Revision: 33249

URL: http://svn.reactos.org/svn/reactos?rev=33249&view=rev
Log:
Fixed the last regress I intdues for loading ms dxg.sys now it works loading again and we come allot futuer with our ddraw.dll. 
without using hacks. 

Modified:
    trunk/reactos/subsystems/win32/win32k/ntddraw/ddraw.c
    trunk/reactos/subsystems/win32/win32k/objects/dc.c

Modified: trunk/reactos/subsystems/win32/win32k/ntddraw/ddraw.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntddraw/ddraw.c?rev=33249&r1=33248&r2=33249&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntddraw/ddraw.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntddraw/ddraw.c [iso-8859-1] Fri May  2 15:16:03 2008
@@ -34,8 +34,8 @@
     NTSTATUS Status;
     PEPROCESS Proc = NULL;
     PDC pDC = NULL;
-    PGDIDEVICE pDev = (PGDIDEVICE)pDC->pPDev;
-    PGD_DXDDENABLEDIRECTDRAW pfnDdEnableDirectDraw = (PGD_DXDDENABLEDIRECTDRAW)gpDxFuncs[DXG_INDEX_DxDdEnableDirectDraw].pfn;
+    PGDIDEVICE pDev = NULL;
+    PGD_DXDDENABLEDIRECTDRAW pfnDdEnableDirectDraw = NULL;
     BOOL success = FALSE;
     
     /* FIXME get the process data */
@@ -57,7 +57,9 @@
         DPRINT1("Warning : Failed to lock hdc\n");
         return FALSE;
     }
-      
+
+    pDev = (PGDIDEVICE)pDC->pPDev;
+
     /* test see if drv got a dx interface or not */
     if  ( ( pDev->DriverFunctions.DisableDirectDraw == NULL) ||
           ( pDev->DriverFunctions.EnableDirectDraw == NULL))
@@ -65,17 +67,16 @@
         DPRINT1("Waring : DisableDirectDraw and EnableDirectDraw are NULL, no dx driver \n");    
     }
     else
-    {
-        /* FIXME HACK : some how pEDDgpl got zero out */
-        pDev->pEDDgpl = (PVOID)&edd_DdirectDraw_Global;
-
-        /* FIXME : proper check see if it been disable */
-        if (pDev->pEDDgpl->dhpdev == 0)
+    {   
+        
+        /* CHeck see if dx have been enable or not */
+        if (pDev->pEDDgpl->hDev != pDC->pPDev)
         {
             pDev->pEDDgpl->ddCallbacks.dwSize = sizeof(DD_CALLBACKS);
             pDev->pEDDgpl->ddSurfaceCallbacks.dwSize = sizeof(DD_SURFACECALLBACKS);
             pDev->pEDDgpl->ddPaletteCallbacks.dwSize = sizeof(DD_PALETTECALLBACKS);
 
+            pfnDdEnableDirectDraw = (PGD_DXDDENABLEDIRECTDRAW)gpDxFuncs[DXG_INDEX_DxDdEnableDirectDraw].pfn;
             if (pfnDdEnableDirectDraw == NULL)
             {
                 DPRINT1("Warning: no pfnDdEnableDirectDraw\n");

Modified: trunk/reactos/subsystems/win32/win32k/objects/dc.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/objects/dc.c?rev=33249&r1=33248&r2=33249&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/dc.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/dc.c [iso-8859-1] Fri May  2 15:16:03 2008
@@ -553,7 +553,7 @@
       PrimarySurface.ppdevNext = NULL;    // Fixme! We need to support more than display drvs.
       PrimarySurface.ppdevParent = NULL;  // Always NULL if primary.
       PrimarySurface.pGraphicsDev = NULL; // Fixme!
-      PrimarySurface.pEDDgpl = (PVOID)&edd_DdirectDraw_Global; // FIXME! We need to support more than display drvs.
+      PrimarySurface.pEDDgpl = (EDD_DIRECTDRAW_GLOBAL *)&edd_DdirectDraw_Global; // FIXME! We need to support more than display drvs.
       RtlZeroMemory( &edd_DdirectDraw_Global ,sizeof(EDD_DIRECTDRAW_GLOBAL));
       ret = TRUE;
       goto cleanup;



More information about the Ros-diffs mailing list