diff --git a/reactos/include/reactos/drivers/directx/directxint.h b/reactos/include/reactos/drivers/directx/directxint.h index 9153bfb1db6..31be078940b 100644 --- a/reactos/include/reactos/drivers/directx/directxint.h +++ b/reactos/include/reactos/drivers/directx/directxint.h @@ -12,17 +12,17 @@ typedef struct _EDD_DIRECTDRAW_LOCAL // GDI Object Header // DD_BASEOBJECT pobj; -/* 0x10 */ struct _EDD_DIRECTDRAW_GLOBAL * peDirectDrawGlobal; +/* 0x10 */ struct _EDD_DIRECTDRAW_GLOBAL * peDirectDrawGlobal; // verify it match windows xp /* 0x1C */ struct _EDD_SURFACE * peSurface_DdList; /* 0x1C */ ULONG unk_01c; /* 0x20 */ ULONG unk_020; -/* 0x24 */ struct _EDD_DIRECTDRAW_GLOBAL * peDirectDrawGlobal2; +/* 0x24 */ struct _EDD_DIRECTDRAW_GLOBAL * peDirectDrawGlobal2; // verify it match windows xp /* 0x28 */ FLATPTR fpProcess; /* 0x2C */ FLONG fl; -/* 0x30 */ HANDLE UniqueProcess; +/* 0x30 */ struct _EDD_DIRECTDRAW_LOCAL *peDirectDrawLocal_prev; // verify it match windows xp, to old lcl store here when new handle are create. /* 0x34 */ PEPROCESS Process; /* 0x38 */ ULONG unk_038; -/* 0x3C */ ULONG unk_03C; +/* 0x3C */ HANDLE UniqueProcess; /* 0x40 */ VOID *unk_040; /* 0x44 */ VOID *unk_044; /* 0x48 */ ULONG unk_048; @@ -121,7 +121,7 @@ typedef struct _EDD_DIRECTDRAW_GLOBAL /* 0x4EC */ ULONG unk_4ec[18]; /* 0x534 */ D3DNTHAL_CALLBACKS3 d3dNtHalCallbacks3; /* 0x54C */ ULONG unk_54c[23]; -/* 0x5A8 */ EDD_DIRECTDRAW_LOCAL* peDirectDrawLocalList; +/* 0x5A8 */ EDD_DIRECTDRAW_LOCAL* peDirectDrawLocalList; // verify it match windows xp, comment it is current local struct not a list /* 0x5ac */ EDD_SURFACE* peSurface_LockList; /* 0x5B0 */ FLONG fl; /* 0x5B4 */ ULONG cSurfaceLocks; @@ -131,6 +131,8 @@ typedef struct _EDD_DIRECTDRAW_GLOBAL /* 0x5C4 */ BOOL bSuspended; /* 0x5C8 */ ULONG unk_5c8[12]; /* 0x5F8 */ RECTL rcbounds; +/* 0x5FC */ ULONG unk_5FC; +/* 0x600 */ ULONG unk_600; /* 0x608 */ HDEV hDev; /* 0x60c */ PVOID hPDev; /* The real Pdev */ diff --git a/reactos/subsystems/win32/win32k/ntddraw/dd.c b/reactos/subsystems/win32/win32k/ntddraw/dd.c index 208e7359d78..2b6df794d0f 100644 --- a/reactos/subsystems/win32/win32k/ntddraw/dd.c +++ b/reactos/subsystems/win32/win32k/ntddraw/dd.c @@ -75,10 +75,8 @@ NtGdiDdCanCreateSurface(HANDLE hDirectDrawLocal, } DPRINT1("Calling on dxg.sys DdCanCreateSurface\n"); - DPRINT1("FIXME it crash when it trying call on pfnDdCanCreateSurface\n"); - /* FIXME it crash when it trying call on pfnDdCanCreateSurface */ - // return pfnDdCanCreateSurface(hDirectDrawLocal,puCanCreateSurfaceData); - return 0; + + return pfnDdCanCreateSurface(hDirectDrawLocal,puCanCreateSurfaceData); } /************************************************************************/ @@ -98,10 +96,8 @@ NtGdiDdGetScanLine(HANDLE hDirectDrawLocal, } DPRINT1("Calling on dxg.sys pfnDdGetScanLine\n"); - DPRINT1("FIXME it crash when it trying call on pfnDdGetScanLine\n"); - /* FIXME it crash when it trying call on pfnDdGetScanLine */ - // return pfnDdGetScanLine(hDirectDrawLocal,puGetScanLineData); - return 0; + + return pfnDdGetScanLine(hDirectDrawLocal,puGetScanLineData); } diff --git a/reactos/subsystems/win32/win32k/ntddraw/ddraw.c b/reactos/subsystems/win32/win32k/ntddraw/ddraw.c index 942fad29f26..df7a094e127 100644 --- a/reactos/subsystems/win32/win32k/ntddraw/ddraw.c +++ b/reactos/subsystems/win32/win32k/ntddraw/ddraw.c @@ -24,7 +24,7 @@ HANDLE ghDxGraphics = NULL; ULONG gdwDirectDrawContext; EDD_DIRECTDRAW_GLOBAL edd_DdirectDraw_Global; -EDD_DIRECTDRAW_LOCAL edd_DirectDrawLocalList; + /************************************************************************/ @@ -118,18 +118,6 @@ DxDdStartupDxGraphics( ULONG ulc1, gpDxFuncs[lstDrvFN[t].iFunc].pfn =lstDrvFN[t].pfn; } - /* dump sort list for debuging */ -#if DXDDRAWDEBUG - DPRINT1("ghDxGraphics address 0x%08lx\n",ghDxGraphics); - DPRINT1("gpfnStartupDxGraphics address 0x%08lx\n",gpfnStartupDxGraphics); - DPRINT1("gpfnCleanupDxGraphics address 0x%08lx\n",gpfnCleanupDxGraphics); - - 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); - } -#endif DPRINT1("DirectX interface is activated\n"); } @@ -184,16 +172,11 @@ NtGdiDdCreateDirectDrawObject(HDC hdc) ((PGDIDEVICE)pDC->pPDev)->pEDDgpl = &edd_DdirectDraw_Global; RtlZeroMemory(&edd_DdirectDraw_Global,sizeof(EDD_DIRECTDRAW_GLOBAL)); - /* FIXME this should be alloc by win32k */ - RtlZeroMemory(&edd_DirectDrawLocalList,sizeof(EDD_DIRECTDRAW_LOCAL)); + /* setup hdev for edd_DdirectDraw_Global xp */ - edd_DdirectDraw_Global.hDev = (PVOID)pDC->pPDev; edd_DdirectDraw_Global.hPDev = (PVOID)pDC->pPDev; - edd_DdirectDraw_Global.peDirectDrawLocalList = &edd_DirectDrawLocalList; - /* setup hdev for edd_DdirectDraw_Local xp */ - edd_DirectDrawLocalList.peDirectDrawGlobal = &edd_DdirectDraw_Global; DC_UnlockDc(pDC); /* get the pfnDdCreateDirectDrawObject after we load the drv */ @@ -353,12 +336,11 @@ NtGdiDdDeleteDirectDrawObject(HANDLE hDirectDrawLocal) DPRINT1("Warning: hDirectDrawLocal is NULL\n"); return DDHAL_DRIVER_HANDLED; } + DPRINT1("hDirectDrawLocal = %lx \n",hDirectDrawLocal); DPRINT1("Calling dxg.sys pfnDdDeleteDirectDrawObject\n"); - DPRINT1("FIXME delete of the HANDLE\n"); - /* FIXME it crash inside or after it return from DxEngLockShareSem */ - // return pfnDdDeleteDirectDrawObject(hDirectDrawLocal); - return DDHAL_DRIVER_HANDLED; + + return pfnDdDeleteDirectDrawObject(hDirectDrawLocal); } /************************************************************************/ @@ -627,20 +609,20 @@ NtGdiDdSetGammaRamp(HANDLE hDirectDraw, /* internal debug api */ void dump_edd_directdraw_global(EDD_DIRECTDRAW_GLOBAL *pEddgbl) { - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->dhpdev : 0x%08lx\n",pEddgbl->dhpdev); - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->dwReserved1 : 0x%08lx\n",pEddgbl->dwReserved1); - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->dwReserved2 : 0x%08lx\n",pEddgbl->dwReserved2); - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->unk_000c[0] : 0x%08lx\n",pEddgbl->unk_000c[0]); - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->unk_000c[1] : 0x%08lx\n",pEddgbl->unk_000c[1]); - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->unk_000c[2] : 0x%08lx\n",pEddgbl->unk_000c[2]); - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->cDriverReferences : 0x%08lx\n",pEddgbl->cDriverReferences); - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->unk_01c[0] : 0x%08lx\n",pEddgbl->unk_01c[0]); - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->unk_01c[1] : 0x%08lx\n",pEddgbl->unk_01c[1]); - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->unk_01c[2] : 0x%08lx\n",pEddgbl->unk_01c[2]); - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->llAssertModeTimeout : 0x%llx\n",pEddgbl->llAssertModeTimeout); - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->dwNumHeaps : 0x%08lx\n",pEddgbl->dwNumHeaps); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->dhpdev : 0x%08lx\n",(((DWORD)&pEddgbl->dhpdev) - (DWORD)pEddgbl), pEddgbl->dhpdev); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->dwReserved1 : 0x%08lx\n",(((DWORD)&pEddgbl->dwReserved1) - (DWORD)pEddgbl),pEddgbl->dwReserved1); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->dwReserved2 : 0x%08lx\n",(((DWORD)&pEddgbl->dwReserved2) - (DWORD)pEddgbl),pEddgbl->dwReserved2); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->unk_000c[0] : 0x%08lx\n",(((DWORD)&pEddgbl->unk_000c) - (DWORD)pEddgbl),pEddgbl->unk_000c[0]); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->unk_000c[1] : 0x%08lx\n",(((DWORD)&pEddgbl->unk_000c) - (DWORD)pEddgbl),pEddgbl->unk_000c[1]); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->unk_000c[2] : 0x%08lx\n",(((DWORD)&pEddgbl->unk_000c) - (DWORD)pEddgbl),pEddgbl->unk_000c[2]); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->cDriverReferences : 0x%08lx\n",(((DWORD)&pEddgbl->cDriverReferences) - (DWORD)pEddgbl),pEddgbl->cDriverReferences); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->unk_01c[0] : 0x%08lx\n",(((DWORD)&pEddgbl->unk_01c) - (DWORD)pEddgbl),pEddgbl->unk_01c[0]); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->unk_01c[1] : 0x%08lx\n",(((DWORD)&pEddgbl->unk_01c) - (DWORD)pEddgbl),pEddgbl->unk_01c[1]); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->unk_01c[2] : 0x%08lx\n",(((DWORD)&pEddgbl->unk_01c) - (DWORD)pEddgbl),pEddgbl->unk_01c[2]); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->llAssertModeTimeout : 0x%llx\n",(((DWORD)&pEddgbl->llAssertModeTimeout) - (DWORD)pEddgbl),pEddgbl->llAssertModeTimeout); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->dwNumHeaps : 0x%08lx\n",(((DWORD)&pEddgbl->dwNumHeaps) - (DWORD)pEddgbl),pEddgbl->dwNumHeaps); // VIDEOMEMORY *pvmList; - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->pvmList : 0x%08lx\n",pEddgbl->pvmList); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->pvmList : 0x%08lx\n",(((DWORD)&pEddgbl->pvmList) - (DWORD)pEddgbl),pEddgbl->pvmList); DPRINT1("PEDD_DIRECTDRAW_GLOBAL->dwNumFourCC : 0x%08lx\n",pEddgbl->dwNumFourCC); DPRINT1("PEDD_DIRECTDRAW_GLOBAL->pdwFourCC : 0x%08lx\n",pEddgbl->pdwFourCC); // DD_HALINFO ddHalInfo; @@ -844,8 +826,10 @@ void dump_edd_directdraw_global(EDD_DIRECTDRAW_GLOBAL *pEddgbl) DPRINT1("PEDD_DIRECTDRAW_GLOBAL->unk_5c8[11] : 0x%08lx\n",pEddgbl->unk_5c8[11]); // RECTL rcbounds; DPRINT1("PEDD_DIRECTDRAW_GLOBAL->rcbounds : 0x%08lx\n",pEddgbl->rcbounds); - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->hDev : 0x%08lx\n",pEddgbl->hDev); - DPRINT1("PEDD_DIRECTDRAW_GLOBAL->hPDev : 0x%08lx\n",pEddgbl->hPDev); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->unk_5FC : 0x%08lx\n",(((DWORD)&pEddgbl->unk_5FC) - (DWORD)pEddgbl), pEddgbl->unk_5FC); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->unk_600 : 0x%08lx\n",(((DWORD)&pEddgbl->unk_600) - (DWORD)pEddgbl), pEddgbl->unk_600); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->hDev : 0x%08lx\n",(((DWORD)&pEddgbl->hDev) - (DWORD)pEddgbl), pEddgbl->hDev); + DPRINT1("0x%08lx PEDD_DIRECTDRAW_GLOBAL->hPDev : 0x%08lx\n",(((DWORD)&pEddgbl->hPDev) - (DWORD)pEddgbl), pEddgbl->hPDev); DPRINT1("PEDD_DIRECTDRAW_GLOBAL->ddPaletteCallbacks : 0x%08lx\n",pEddgbl->ddPaletteCallbacks); DPRINT1("PEDD_DIRECTDRAW_GLOBAL->unk_1e0[0] : 0x%08lx\n",pEddgbl->unk_610[0]); DPRINT1("PEDD_DIRECTDRAW_GLOBAL->unk_610[1] : 0x%08lx\n",pEddgbl->unk_610[1]); diff --git a/reactos/subsystems/win32/win32k/ntddraw/dxeng.c b/reactos/subsystems/win32/win32k/ntddraw/dxeng.c index f0d3719b7f2..5f53af6a62b 100644 --- a/reactos/subsystems/win32/win32k/ntddraw/dxeng.c +++ b/reactos/subsystems/win32/win32k/ntddraw/dxeng.c @@ -178,7 +178,7 @@ BOOLEAN STDCALL DxEngLockShareSem() { - BOOLEAN retVal = 0; + BOOLEAN retVal = FALSE; DPRINT1("ReactX Calling : DxEngLockShareSem\n"); #if 0 if (ExIsResourceAcquiredExclusiveLite(&ghsemShareDevLock) == FALSE) @@ -541,12 +541,12 @@ DxEngLockHdev(HDEV hDev) PGDIDEVICE pPDev = (PGDIDEVICE)hDev; PERESOURCE Resource; + DPRINT1("ReactX Calling : DxEngLockHdev \n"); + DPRINT1("hDev : 0x%08lx\n",hDev); Resource = pPDev->hsemDevLock; - DPRINT1("ReactX Calling : DxEngLockHdev \n"); - if (Resource) { KeEnterCriticalRegion();