diff --git a/reactos/subsystems/win32/win32k/include/intddraw.h b/reactos/subsystems/win32/win32k/include/intddraw.h index 12130da9268..7655fb42844 100644 --- a/reactos/subsystems/win32/win32k/include/intddraw.h +++ b/reactos/subsystems/win32/win32k/include/intddraw.h @@ -9,6 +9,9 @@ /* From ddraw.c */ extern PDRVFN gpDxFuncs; +typedef BOOL (NTAPI* PGD_DDSETGAMMARAMP)(HANDLE, HDC, LPVOID); +typedef BOOL (NTAPI* PGD_DDRELEASEDC)(HANDLE); +typedef BOOL (NTAPI* PGD_DDRESTVISRGN)(HANDLE, HWND); typedef HANDLE (NTAPI* PGD_DDGETDXHANDLE)(HANDLE, HANDLE, BOOL); typedef HDC (NTAPI *PGD_DDGETDC)(HANDLE, PALETTEENTRY *); typedef DWORD (NTAPI *PGD_DXGENERICTRUNK)(ULONG_PTR, ULONG_PTR, SIZE_T*, PVOID, SIZE_T*, PVOID); diff --git a/reactos/subsystems/win32/win32k/ntddraw/dd.c b/reactos/subsystems/win32/win32k/ntddraw/dd.c index cf361ffdbb0..b07ec8abcce 100644 --- a/reactos/subsystems/win32/win32k/ntddraw/dd.c +++ b/reactos/subsystems/win32/win32k/ntddraw/dd.c @@ -137,7 +137,7 @@ NtGdiDdCreateSurfaceEx(HANDLE hDirectDraw, } DPRINT1("Calling on dxg.sys pfnDdCreateSurfaceEx"); - return pfnDdCreateSurfaceEx(hDirectDrawLocal,puGetScanLineData); + return pfnDdCreateSurfaceEx(hDirectDraw,hSurface,dwSurfaceHandle); } diff --git a/reactos/subsystems/win32/win32k/ntddraw/ddraw.c b/reactos/subsystems/win32/win32k/ntddraw/ddraw.c index ff24a038dbf..7c97d49e687 100644 --- a/reactos/subsystems/win32/win32k/ntddraw/ddraw.c +++ b/reactos/subsystems/win32/win32k/ntddraw/ddraw.c @@ -456,7 +456,7 @@ NtGdiDdFlipToGDISurface(HANDLE hDirectDraw, } DPRINT1("Calling on dxg.sys pfnDdFlipToGDISurface"); - return pfnDdFlipToGDISurface(hDirectDrawLocal, puFlipToGDISurfaceData); + return pfnDdFlipToGDISurface(hDirectDraw, puFlipToGDISurfaceData); } @@ -493,7 +493,7 @@ NtGdiDdGetDxHandle(HANDLE hDirectDraw, BOOL bRelease) { - PGD_DDGETDXHANDLE pfnDdGetDxHandle = NULL; + PGD_DDGETDXHANDLE pfnDdGetDxHandle = NULL; INT i; DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdGetDxHandle, pfnDdGetDxHandle); @@ -516,7 +516,19 @@ BOOL STDCALL NtGdiDdReleaseDC(HANDLE hSurface) { + PGD_DDRELEASEDC pfnDdReleaseDC = NULL; + INT i; + DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdReleaseDC, pfnDdReleaseDC); + + if (pfnDdReleaseDC == NULL) + { + DPRINT1("Warring no pfnDdReleaseDC"); + return DDHAL_DRIVER_NOTHANDLED; + } + + DPRINT1("Calling on dxg.sys pfnDdReleaseDC"); + return pfnDdReleaseDC(hSurface); } /************************************************************************/ @@ -528,6 +540,19 @@ NtGdiDdResetVisrgn(HANDLE hSurface, HWND hwnd) { + PGD_DDRESTVISRGN pfnDdResetVisrgn = NULL; + INT i; + + DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdResetVisrgn, pfnDdResetVisrgn); + + if (pfnDdResetVisrgn == NULL) + { + DPRINT1("Warring no pfnDdResetVisrgn"); + return DDHAL_DRIVER_NOTHANDLED; + } + + DPRINT1("Calling on dxg.sys pfnDdResetVisrgn"); + return pfnDdResetVisrgn(hSurface, hwnd); } /************************************************************************/ @@ -539,7 +564,19 @@ NtGdiDdSetGammaRamp(HANDLE hDirectDraw, HDC hdc, LPVOID lpGammaRamp) { + PGD_DDSETGAMMARAMP pfnDdSetGammaRamp = NULL; + INT i; + DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdSetGammaRamp, pfnDdSetGammaRamp); + + if (pfnDdSetGammaRamp == NULL) + { + DPRINT1("Warring no pfnDdSetGammaRamp"); + return DDHAL_DRIVER_NOTHANDLED; + } + + DPRINT1("Calling on dxg.sys pfnDdSetGammaRamp"); + return pfnDdSetGammaRamp(hDirectDraw, hdc, lpGammaRamp); }