From 92a93b0559fda1fb21b334a6398b9b5b3ca0ae4b Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Mon, 21 Apr 2008 05:42:08 +0000 Subject: [PATCH] DxDdStartupDxGraphics Bugfix : the load order, it try loading vista dxkrnl.sys frist then it try loading dxg.System rember I have not tested vista dxkrnl.sys in reactos at all yet. Bugfix : thx piggworth for notice the hDev was never resive to DxEngLockHdev, it still does not do in some case. we need more invigaste why svn path=/trunk/; revision=33084 --- reactos/boot/bootdata/packages/reactos.dff | 20 ++++++++++--- .../subsystems/win32/win32k/ntddraw/ddraw.c | 30 +++++++++---------- .../subsystems/win32/win32k/ntddraw/dxeng.c | 6 +++- 3 files changed, 36 insertions(+), 20 deletions(-) diff --git a/reactos/boot/bootdata/packages/reactos.dff b/reactos/boot/bootdata/packages/reactos.dff index 912063daf3e..89ea21762e8 100644 --- a/reactos/boot/bootdata/packages/reactos.dff +++ b/reactos/boot/bootdata/packages/reactos.dff @@ -125,7 +125,8 @@ dll\directx\dplay\dplay.dll 1 dll\directx\dplayx\dplayx.dll 1 dll\directx\dsound\dsound.dll 1 dll\directx\dxdiagn\dxdiagn.dll 1 -dll\directx\ddraw\ddraw.dll 1 +windows\ddraw.dll 1 +windows\dciman32.dll 1 dll\directx\d3d8thk\d3d8thk.dll 1 dll\directx\devenum\devenum.dll 1 dll\directx\ksproxy\ksproxy.ax 1 @@ -307,9 +308,9 @@ drivers\base\null\null.sys 2 drivers\bus\isapnp\isapnp.sys 2 -drivers\directx\dxapi\dxapi.sys 2 -drivers\directx\dxg\dxg.sys 2 -drivers\directx\dxgthk\dxgthk.sys 2 +windows\dxapi.sys 2 +windows\dxg.sys 2 +windows\dxgthk.sys 2 drivers\filesystems\fs_rec\fs_rec.sys 2 drivers\filesystems\msfs\msfs.sys 2 @@ -605,6 +606,17 @@ modules\rostests\winetests\usp10\usp10_winetest.exe 7 o modules\rostests\winetests\uxtheme\uxtheme_winetest.exe 7 optional modules\rostests\winetests\version\version_winetest.exe 7 optional modules\rostests\winetests\wininet\wininet_winetest.exe 7 optional + +modules\rostests\dxtest\ddraw_test\ddraw_test.exe 7 optional +modules\rostests\dxtest\win32kdxtest\win32kdxtest.exe 7 optional + +modules\rostests\apitests\gdi32api\gdi32api.exe 7 optional + +modules\rostests\apitests\user32api\user32api.exe 7 optional +modules\rostests\apitests\w32knapi\w32knapi.exe 7 optional +modules\rostests\apitests\w32kdll\w32kdll_ros\w32kdll.dll 7 optional + + modules\wallpaper\lake.bmp 4 optional ; Native libraries diff --git a/reactos/subsystems/win32/win32k/ntddraw/ddraw.c b/reactos/subsystems/win32/win32k/ntddraw/ddraw.c index 1eccc51d3b7..1d6a8082b96 100644 --- a/reactos/subsystems/win32/win32k/ntddraw/ddraw.c +++ b/reactos/subsystems/win32/win32k/ntddraw/ddraw.c @@ -23,7 +23,7 @@ DRVFN gpDxFuncs[DXG_INDEX_DxDdIoctl]; HANDLE ghDxGraphics = NULL; ULONG gdwDirectDrawContext; void dump_edd_directdraw_global(EDD_DIRECTDRAW_GLOBAL *pEddgbl); -EDD_DIRECTDRAW_GLOBAL eDdirectDraw_Global; +EDD_DIRECTDRAW_GLOBAL edd_DdirectDraw_Global; /************************************************************************/ @@ -54,17 +54,14 @@ DxDdStartupDxGraphics( ULONG ulc1, /* Loading the kernel interface of directx for win32k */ - - ghDxGraphics = EngLoadImage(L"\\SystemRoot\\System32\\drivers\\dxg.sys"); - + DPRINT1("Warning: trying loading vista dxkrnl.sys\n"); + ghDxGraphics = EngLoadImage(L"\\SystemRoot\\System32\\drivers\\dxkrnl.sys"); if ( ghDxGraphics == NULL) { - DPRINT1("Warning: dxg.sys not found\n"); - + DPRINT1("Warning: dxkrnl.sys not found\n"); /* try loading vista dx kernel */ - DPRINT1("Warning: trying loading vista dxkrnl.sys\n"); - - ghDxGraphics = EngLoadImage(L"\\SystemRoot\\System32\\drivers\\dxkrnl.sys"); + DPRINT1("Warning: trying loading xp/2003/reactos dxg.sys\n"); + ghDxGraphics = EngLoadImage(L"\\SystemRoot\\System32\\drivers\\dxg.sys"); } if ( ghDxGraphics == NULL) @@ -117,7 +114,7 @@ DxDdStartupDxGraphics( ULONG ulc1, for (t=0;t<=DXG_INDEX_DxDdIoctl;t++) { gpDxFuncs[lstDrvFN[t].iFunc].iFunc =lstDrvFN[t].iFunc; - gpDxFuncs[lstDrvFN[t].iFunc].pfn =lstDrvFN[t].pfn; + gpDxFuncs[lstDrvFN[t].iFunc].pfn =lstDrvFN[t].pfn; } /* dump sort list for debuging */ @@ -129,7 +126,7 @@ DxDdStartupDxGraphics( ULONG ulc1, for (t=0;t<=DXG_INDEX_DxDdIoctl;t++) { DPRINT1("gpDxFuncs[0x%08lx].iFunc = 0x%08lx\n",t,gpDxFuncs[t].iFunc); - DPRINT1("gpDxFuncs[0x%08lx].pfn = 0x%08lx\n",t,gpDxFuncs[t].pfn); + DPRINT1("gpDxFuncs[0x%08lx].pfn = 0x%08lx\n",t,gpDxFuncs[t].pfn); } #endif DPRINT1("DirectX interface is activated\n"); @@ -183,10 +180,13 @@ NtGdiDdCreateDirectDrawObject(HDC hdc) return 0; } /* FIXME This should be alloc for each drv and use it from each drv, not global for whole win32k */ - ((PGDIDEVICE)pDC->pPDev)->pEDDgpl = &eDdirectDraw_Global; - RtlZeroMemory(&eDdirectDraw_Global,sizeof(EDD_DIRECTDRAW_GLOBAL)); - DC_UnlockDc(pDC); + ((PGDIDEVICE)pDC->pPDev)->pEDDgpl = &edd_DdirectDraw_Global; + RtlZeroMemory(&edd_DdirectDraw_Global,sizeof(EDD_DIRECTDRAW_GLOBAL)); + /* setup hdev for edd_DdirectDraw_Global xp */ + edd_DdirectDraw_Global.hDev = (PVOID)pDC->pPDev; + edd_DdirectDraw_Global.hPDev = (PVOID)pDC->pPDev; + DC_UnlockDc(pDC); /* get the pfnDdCreateDirectDrawObject after we load the drv */ pfnDdCreateDirectDrawObject = (PGD_DDCREATEDIRECTDRAWOBJECT)gpDxFuncs[DXG_INDEX_DxDdCreateDirectDrawObject].pfn; @@ -201,7 +201,7 @@ NtGdiDdCreateDirectDrawObject(HDC hdc) DxHandle = pfnDdCreateDirectDrawObject(hdc); #if DXDDRAWDEBUG - dump_edd_directdraw_global(&eDdirectDraw_Global); + dump_edd_directdraw_global(&edd_DdirectDraw_Global); #endif return DxHandle; diff --git a/reactos/subsystems/win32/win32k/ntddraw/dxeng.c b/reactos/subsystems/win32/win32k/ntddraw/dxeng.c index 0232ab050a6..2469cb14c47 100644 --- a/reactos/subsystems/win32/win32k/ntddraw/dxeng.c +++ b/reactos/subsystems/win32/win32k/ntddraw/dxeng.c @@ -530,7 +530,11 @@ STDCALL DxEngLockHdev(HDEV hDev) { PGDIDEVICE pPDev = (PGDIDEVICE)hDev; - PERESOURCE Resource = pPDev->hsemDevLock; + PERESOURCE Resource; + + DPRINT1("hDev : 0x%08lx\n",hDev); + + Resource = pPDev->hsemDevLock; DPRINT1("ReactX Calling : DxEngLockHdev \n");