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/ntd... ============================================================================== --- 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/obj... ============================================================================== --- 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;