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
This commit is contained in:
Magnus Olsen 2008-04-21 05:42:08 +00:00
parent 09592ecd54
commit 92a93b0559
3 changed files with 36 additions and 20 deletions

View file

@ -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

View file

@ -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;

View file

@ -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");