From 2f61a33495019dd2c110f20f0e45cdb699b08a6a Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Sun, 30 Dec 2007 22:41:31 +0000 Subject: [PATCH] implement DxDdLockDirectDrawSurface in dxg svn path=/trunk/; revision=31508 --- reactos/drivers/directx/dxg/dxg_driver.h | 4 ++-- reactos/drivers/directx/dxg/dxg_int.h | 1 + reactos/drivers/directx/dxg/eng.c | 19 ++++++++++++++++++- reactos/include/reactos/drivers/directx/dxg.h | 2 +- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/reactos/drivers/directx/dxg/dxg_driver.h b/reactos/drivers/directx/dxg/dxg_driver.h index b3b726c05a7..aae813c378e 100644 --- a/reactos/drivers/directx/dxg/dxg_driver.h +++ b/reactos/drivers/directx/dxg/dxg_driver.h @@ -1,6 +1,6 @@ -DRVFN gaDxgFuncs [] = +DRVFN gaDxgFuncs [] = { {DXG_INDEX_DxDxgGenericThunk, (PFN)DxDxgGenericThunk}, //{DXG_INDEX_DxD3dContextCreate, (PFN)DxD3dContextCreate}, @@ -88,7 +88,7 @@ DRVFN gaDxgFuncs [] = //{DXG_INDEX_DxDdEnableDirectDrawRedirection, (PFN)DxDdEnableDirectDrawRedirection}, //{DXG_INDEX_DxDdAllocPrivateUserMem, (PFN)DxDdAllocPrivateUserMem}, //{DXG_INDEX_DxDdFreePrivateUserMem, (PFN)DxDdFreePrivateUserMem}, - //{DXG_INDEX_DxDdLockDirectDrawSurface, (PFN)DxDdLockDirectDrawSurface}, + {DXG_INDEX_DxDdLockDirectDrawSurface, (PFN)DxDdLockDirectDrawSurface}, //{DXG_INDEX_DxDdUnlockDirectDrawSurface, (PFN)DxDdUnlockDirectDrawSurface}, //{DXG_INDEX_DxDdSetAccelLevel, (PFN)DxDdSetAccelLevel}, //{DXG_INDEX_DxDdGetSurfaceLock, (PFN)DxDdGetSurfaceLock}, diff --git a/reactos/drivers/directx/dxg/dxg_int.h b/reactos/drivers/directx/dxg/dxg_int.h index 17ec7c3ff11..ae67758114f 100644 --- a/reactos/drivers/directx/dxg/dxg_int.h +++ b/reactos/drivers/directx/dxg/dxg_int.h @@ -88,6 +88,7 @@ extern PLARGE_INTEGER gpLockShortDelay; /* Driver list export functions */ DWORD STDCALL DxDxgGenericThunk(ULONG_PTR ulIndex, ULONG_PTR ulHandle, SIZE_T *pdwSizeOfPtr1, PVOID pvPtr1, SIZE_T *pdwSizeOfPtr2, PVOID pvPtr2); DWORD STDCALL DxDdIoctl(ULONG ulIoctl, PVOID pBuffer, ULONG ulBufferSize); +PDD_SURFACE_LOCAL STDCALL DxDdLockDirectDrawSurface(HANDLE hDdSurface); /* Internel functions */ BOOL FASTCALL VerifyObjectOwner(PDD_ENTRY pEntry); diff --git a/reactos/drivers/directx/dxg/eng.c b/reactos/drivers/directx/dxg/eng.c index f83a44bfa74..75ac177b3ec 100644 --- a/reactos/drivers/directx/dxg/eng.c +++ b/reactos/drivers/directx/dxg/eng.c @@ -5,10 +5,27 @@ * FILE: drivers/directx/dxg/main.c * PROGRAMER: Magnus olsen (magnus@greatlord.com) * REVISION HISTORY: - * 15/10-2007 Magnus Olsen + * 30/12-2007 Magnus Olsen */ +#include +PDD_SURFACE_LOCAL +STDCALL +DxDdLockDirectDrawSurface(HANDLE hDdSurface) +{ + PDD_ENTRY pObject; + PDD_SURFACE_LOCAL pSurfacelcl = NULL; + + pObject = DdHmgLock(hDdSurface, 2, 0); + if (pObject != NULL) + { + pSurfacelcl = (PDD_SURFACE_LOCAL)((PBYTE)pObject + sizeof(PDD_ENTRY)); + } + + return pSurfacelcl; +} + diff --git a/reactos/include/reactos/drivers/directx/dxg.h b/reactos/include/reactos/drivers/directx/dxg.h index 7b89b994a3d..ae1b844dd61 100644 --- a/reactos/include/reactos/drivers/directx/dxg.h +++ b/reactos/include/reactos/drivers/directx/dxg.h @@ -206,7 +206,7 @@ typedef DWORD (NTAPI *PGD_DXGENERICTRUNK)(ULONG_PTR, ULONG_PTR, SIZE_T*, PVOID, //typedef x (NTAPI *PGD_DxDdEnableDirectDrawRedirection)( //typedef x (NTAPI *PGD_DxDdAllocPrivateUserMem)( //typedef x (NTAPI *PGD_DxDdFreePrivateUserMem)( -//typedef x (NTAPI *PGD_DxDdLockDirectDrawSurface)( +typedef PDD_SURFACE_LOCAL (NTAPI *PGD_DxDdLockDirectDrawSurface)(HANDLE hDdSurface); //typedef x (NTAPI *PGD_DxDdUnlockDirectDrawSurface)( //typedef x (NTAPI *PGD_DxDdSetAccelLevel)( //typedef x (NTAPI *PGD_DxDdGetSurfaceLock)(