Index: drivers/directx/dxg/dxg_int.h =================================================================== --- drivers/directx/dxg/dxg_int.h (revision 43176) +++ drivers/directx/dxg/dxg_int.h (working copy) @@ -95,6 +95,7 @@ DWORD NTAPI DxDdIoctl(ULONG ulIoctl, PVOID pBuffer, ULONG ulBufferSize); PDD_SURFACE_LOCAL NTAPI DxDdLockDirectDrawSurface(HANDLE hDdSurface); BOOL NTAPI DxDdUnlockDirectDrawSurface(PDD_SURFACE_LOCAL pSurface); +BOOL NTAPI DxDdEnableDirectDraw(PPDEVEDD pdevedd, BOOL); /* Internal functions */ BOOL FASTCALL VerifyObjectOwner(PDD_ENTRY pEntry); Index: drivers/directx/dxg/eng.c =================================================================== --- drivers/directx/dxg/eng.c (revision 43176) +++ drivers/directx/dxg/eng.c (working copy) @@ -45,10 +45,13 @@ return retVal; } +BOOL NTAPI DxDdEnableDirectDraw(PPDEVEDD pdevedd, BOOL unknown) +{ + return TRUE ; +} - Index: drivers/directx/dxg/main.c =================================================================== --- drivers/directx/dxg/main.c (revision 43176) +++ drivers/directx/dxg/main.c (working copy) @@ -10,8 +10,107 @@ #include -#include "dxg_driver.h" + + +DRVFN gaDxgFuncs [] = +{ + {DXG_INDEX_DxDxgGenericThunk, (PFN)DxDxgGenericThunk}, + {DXG_INDEX_DxD3dContextCreate, (PFN)NULL}, + {DXG_INDEX_DxD3dContextDestroy, (PFN)NULL}, + {DXG_INDEX_DxD3dContextDestroyAll, (PFN)NULL}, + {DXG_INDEX_DxD3dValidateTextureStageState, (PFN)NULL}, + {DXG_INDEX_DxD3dDrawPrimitives2, (PFN)NULL}, + {DXG_INDEX_DxDdGetDriverState, (PFN)NULL}, + {DXG_INDEX_DxDdAddAttachedSurface, (PFN)NULL}, + {DXG_INDEX_DxDdAlphaBlt, (PFN)NULL}, + {DXG_INDEX_DxDdAttachSurface, (PFN)NULL}, + {DXG_INDEX_DxDdBeginMoCompFrame, (PFN)NULL}, + {DXG_INDEX_DxDdBlt, (PFN)NULL}, + {DXG_INDEX_DxDdCanCreateSurface, (PFN)NULL}, + {DXG_INDEX_DxDdCanCreateD3DBuffer, (PFN)NULL}, + {DXG_INDEX_DxDdColorControl, (PFN)NULL}, + {DXG_INDEX_DxDdCreateDirectDrawObject, (PFN)NULL}, + {DXG_INDEX_DxDdCreateSurface, (PFN)NULL}, + {DXG_INDEX_DxDdCreateD3DBuffer, (PFN)NULL}, + {DXG_INDEX_DxDdCreateMoComp, (PFN)NULL}, + {DXG_INDEX_DxDdCreateSurfaceObject, (PFN)NULL}, + {DXG_INDEX_DxDdDeleteDirectDrawObject, (PFN)NULL}, + {DXG_INDEX_DxDdDeleteSurfaceObject, (PFN)NULL}, + {DXG_INDEX_DxDdDestroyMoComp, (PFN)NULL}, + {DXG_INDEX_DxDdDestroySurface, (PFN)NULL}, + {DXG_INDEX_DxDdDestroyD3DBuffer, (PFN)NULL}, + {DXG_INDEX_DxDdEndMoCompFrame, (PFN)NULL}, + {DXG_INDEX_DxDdFlip, (PFN)NULL}, + {DXG_INDEX_DxDdFlipToGDISurface, (PFN)NULL}, + {DXG_INDEX_DxDdGetAvailDriverMemory, (PFN)NULL}, + {DXG_INDEX_DxDdGetBltStatus, (PFN)NULL}, + {DXG_INDEX_DxDdGetDC, (PFN)NULL}, + {DXG_INDEX_DxDdGetDriverInfo, (PFN)NULL}, + {DXG_INDEX_DxDdGetDxHandle, (PFN)NULL}, + {DXG_INDEX_DxDdGetFlipStatus, (PFN)NULL}, + {DXG_INDEX_DxDdGetInternalMoCompInfo, (PFN)NULL}, + {DXG_INDEX_DxDdGetMoCompBuffInfo, (PFN)NULL}, + {DXG_INDEX_DxDdGetMoCompGuids, (PFN)NULL}, + {DXG_INDEX_DxDdGetMoCompFormats, (PFN)NULL}, + {DXG_INDEX_DxDdGetScanLine, (PFN)NULL}, + {DXG_INDEX_DxDdLock, (PFN)NULL}, + {DXG_INDEX_DxDdLockD3D, (PFN)NULL}, + {DXG_INDEX_DxDdQueryDirectDrawObject, (PFN)NULL}, + {DXG_INDEX_DxDdQueryMoCompStatus, (PFN)NULL}, + {DXG_INDEX_DxDdReenableDirectDrawObject, (PFN)NULL}, + {DXG_INDEX_DxDdReleaseDC, (PFN)NULL}, + {DXG_INDEX_DxDdRenderMoComp, (PFN)NULL}, + {DXG_INDEX_DxDdResetVisrgn, (PFN)NULL}, + {DXG_INDEX_DxDdSetColorKey, (PFN)NULL}, + {DXG_INDEX_DxDdSetExclusiveMode, (PFN)NULL}, + {DXG_INDEX_DxDdSetGammaRamp, (PFN)NULL}, + {DXG_INDEX_DxDdCreateSurfaceEx, (PFN)NULL}, + {DXG_INDEX_DxDdSetOverlayPosition, (PFN)NULL}, + {DXG_INDEX_DxDdUnattachSurface, (PFN)NULL}, + {DXG_INDEX_DxDdUnlock, (PFN)NULL}, + {DXG_INDEX_DxDdUnlockD3D, (PFN)NULL}, + {DXG_INDEX_DxDdUpdateOverlay, (PFN)NULL}, + {DXG_INDEX_DxDdWaitForVerticalBlank, (PFN)NULL}, + {DXG_INDEX_DxDvpCanCreateVideoPort, (PFN)NULL}, + {DXG_INDEX_DxDvpColorControl, (PFN)NULL}, + {DXG_INDEX_DxDvpCreateVideoPort, (PFN)NULL}, + {DXG_INDEX_DxDvpDestroyVideoPort, (PFN)NULL}, + {DXG_INDEX_DxDvpFlipVideoPort, (PFN)NULL}, + {DXG_INDEX_DxDvpGetVideoPortBandwidth, (PFN)NULL}, + {DXG_INDEX_DxDvpGetVideoPortField, (PFN)NULL}, + {DXG_INDEX_DxDvpGetVideoPortFlipStatus, (PFN)NULL}, + {DXG_INDEX_DxDvpGetVideoPortInputFormats, (PFN)NULL}, + {DXG_INDEX_DxDvpGetVideoPortLine, (PFN)NULL}, + {DXG_INDEX_DxDvpGetVideoPortOutputFormats, (PFN)NULL}, + {DXG_INDEX_DxDvpGetVideoPortConnectInfo, (PFN)NULL}, + {DXG_INDEX_DxDvpGetVideoSignalStatus, (PFN)NULL}, + {DXG_INDEX_DxDvpUpdateVideoPort, (PFN)NULL}, + {DXG_INDEX_DxDvpWaitForVideoPortSync, (PFN)NULL}, + {DXG_INDEX_DxDvpAcquireNotification, (PFN)NULL}, + {DXG_INDEX_DxDvpReleaseNotification, (PFN)NULL}, + {DXG_INDEX_DxDdHeapVidMemAllocAligned, (PFN)NULL}, + {DXG_INDEX_DxDdHeapVidMemFree, (PFN)NULL}, + {DXG_INDEX_DxDdEnableDirectDraw, (PFN)DxDdEnableDirectDraw}, + {DXG_INDEX_DxDdDisableDirectDraw, (PFN)NULL}, + {DXG_INDEX_DxDdSuspendDirectDraw, (PFN)NULL}, + {DXG_INDEX_DxDdResumeDirectDraw, (PFN)NULL}, + {DXG_INDEX_DxDdDynamicModeChange, (PFN)NULL}, + {DXG_INDEX_DxDdCloseProcess, (PFN)NULL}, + {DXG_INDEX_DxDdGetDirectDrawBound, (PFN)NULL}, + {DXG_INDEX_DxDdEnableDirectDrawRedirection, (PFN)NULL}, + {DXG_INDEX_DxDdAllocPrivateUserMem, (PFN)NULL}, + {DXG_INDEX_DxDdFreePrivateUserMem, (PFN)NULL}, + {DXG_INDEX_DxDdLockDirectDrawSurface, (PFN)DxDdLockDirectDrawSurface}, + {DXG_INDEX_DxDdUnlockDirectDrawSurface, (PFN)DxDdUnlockDirectDrawSurface}, + {DXG_INDEX_DxDdSetAccelLevel, (PFN)NULL}, + {DXG_INDEX_DxDdGetSurfaceLock, (PFN)NULL}, + {DXG_INDEX_DxDdEnumLockedSurfaceRect, (PFN)NULL}, + {DXG_INDEX_DxDdIoctl, (PFN)DxDdIoctl} + +}; + + LONG gcDummyPageRefCnt = 0; HSEMAPHORE ghsemDummyPage = NULL; VOID *gpDummyPage = NULL; Index: include/reactos/drivers/directx/directxint.h =================================================================== --- include/reactos/drivers/directx/directxint.h (revision 43191) +++ include/reactos/drivers/directx/directxint.h (working copy) @@ -7,6 +7,8 @@ #define DD_BASEOBJECT BASEOBJECT #endif +#include + /* _EDD_DIRECTDRAW_LOCAL is 0x54 bytes long on Windows XP */ typedef struct _EDD_DIRECTDRAW_LOCAL { @@ -174,4 +176,11 @@ /* 0x70C */ ULONG unk_70C; } EDD_DIRECTDRAW_GLOBAL, *PEDD_DIRECTDRAW_GLOBAL; +/* PDEV and EDDX extra data container.*/ +typedef struct _PDEVEDD +{ + DRIVER_FUNCTIONS DriverFunctions; + PEDD_DIRECTDRAW_GLOBAL pEDDgpl; +} PDEVEDD, *PPDEVEDD; + #endif Index: subsystems/win32/win32k/eng/engbrush.c =================================================================== --- subsystems/win32/win32k/eng/engbrush.c (revision 43176) +++ subsystems/win32/win32k/eng/engbrush.c (working copy) @@ -203,7 +203,7 @@ // FIXME: all SURFACEs need a PDEV if (ppdev && bCallDriver) - pfnRealzizeBrush = ppdev->DriverFunctions.RealizeBrush; + pfnRealzizeBrush = ppdev->DevEdd.DriverFunctions.RealizeBrush; if (!pfnRealzizeBrush) pfnRealzizeBrush = EngRealizeBrush; Index: subsystems/win32/win32k/include/pdevobj.h =================================================================== --- subsystems/win32/win32k/include/pdevobj.h (revision 43176) +++ subsystems/win32/win32k/include/pdevobj.h (working copy) @@ -116,11 +116,7 @@ // LONG devAttr; // PVOID WatchDogContext; // ULONG WatchDogs; - union - { - DRIVER_FUNCTIONS DriverFunctions; - PVOID apfn[INDEX_LAST]; // B8C 0x0598 - }; + PDEVEDD DevEdd; /* Used to communicate between dxg and win32k */ /* ros specific */ ULONG DxDd_nCount; @@ -133,16 +129,8 @@ UINT SafetyRemoveLevel; /* at what level was the cursor removed? 0 for not removed */ UINT SafetyRemoveCount; - struct _EDD_DIRECTDRAW_GLOBAL * pEDDgpl; } PDEVOBJ, *PPDEVOBJ; -/* PDEV and EDDX extra data container.*/ -typedef struct _PDEVEDD -{ - PDEVOBJ pdevobj; - EDD_DIRECTDRAW_GLOBAL EDDgpl; -} PDEVEDD, *PPDEVEDD; - extern ULONG gdwDirectDrawContext; #endif /* !__WIN32K_PDEVOBJ_H */ Index: subsystems/win32/win32k/include/surface.h =================================================================== --- subsystems/win32/win32k/include/surface.h (revision 43176) +++ subsystems/win32/win32k/include/surface.h (working copy) @@ -71,7 +71,7 @@ void INTERNAL_CALL SURFACE_CleanupBitsLock(SURFACE *pBMObj); #define GDIDEV(SurfObj) ((PDEVOBJ *)((SurfObj)->hdev)) -#define GDIDEVFUNCS(SurfObj) ((PDEVOBJ *)((SurfObj)->hdev))->DriverFunctions +#define GDIDEVFUNCS(SurfObj) ((PDEVOBJ *)((SurfObj)->hdev))->DevEdd.DriverFunctions INT FASTCALL BitsPerFormat (ULONG Format); ULONG FASTCALL BitmapFormat (WORD Bits, DWORD Compression); Index: subsystems/win32/win32k/ntddraw/ddraw.c =================================================================== --- subsystems/win32/win32k/ntddraw/ddraw.c (revision 43176) +++ subsystems/win32/win32k/ntddraw/ddraw.c (working copy) @@ -62,8 +62,8 @@ pDev = pDC->ppdev; /* test see if drv got a dx interface or not */ - if ( ( pDev->DriverFunctions.DisableDirectDraw == NULL) || - ( pDev->DriverFunctions.EnableDirectDraw == NULL)) + if ( ( pDev->DevEdd.DriverFunctions.DisableDirectDraw == NULL) || + ( pDev->DevEdd.DriverFunctions.EnableDirectDraw == NULL)) { DPRINT1("Waring : DisableDirectDraw and EnableDirectDraw are NULL, no dx driver \n"); } @@ -71,11 +71,11 @@ { /* CHeck see if dx have been enable or not */ - if ( pDev->pEDDgpl->pvmList == NULL) + if ( pDev->DevEdd.pEDDgpl->pvmList == NULL) { - pDev->pEDDgpl->ddCallbacks.dwSize = sizeof(DD_CALLBACKS); - pDev->pEDDgpl->ddSurfaceCallbacks.dwSize = sizeof(DD_SURFACECALLBACKS); - pDev->pEDDgpl->ddPaletteCallbacks.dwSize = sizeof(DD_PALETTECALLBACKS); + pDev->DevEdd.pEDDgpl->ddCallbacks.dwSize = sizeof(DD_CALLBACKS); + pDev->DevEdd.pEDDgpl->ddSurfaceCallbacks.dwSize = sizeof(DD_SURFACECALLBACKS); + pDev->DevEdd.pEDDgpl->ddPaletteCallbacks.dwSize = sizeof(DD_PALETTECALLBACKS); pfnDdEnableDirectDraw = (PGD_DXDDENABLEDIRECTDRAW)gpDxFuncs[DXG_INDEX_DxDdEnableDirectDraw].pfn; if (pfnDdEnableDirectDraw == NULL) @@ -86,10 +86,10 @@ { DPRINT1(" call to pfnDdEnableDirectDraw \n "); /* Note it is the hdev struct it want, not the drv hPDev aka pdc->PDev */ - success = pfnDdEnableDirectDraw(pDC->ppdev, TRUE); + success = pfnDdEnableDirectDraw(&pDev->DevEdd, TRUE); - dump_edd_directdraw_global(pDev->pEDDgpl); - dump_halinfo(&pDev->pEDDgpl->ddHalInfo); + dump_edd_directdraw_global(pDev->DevEdd.pEDDgpl); + dump_halinfo(&pDev->DevEdd.pEDDgpl->ddHalInfo); } } else Index: subsystems/win32/win32k/ntddraw/dxeng.c =================================================================== --- subsystems/win32/win32k/ntddraw/dxeng.c (revision 43176) +++ subsystems/win32/win32k/ntddraw/dxeng.c (working copy) @@ -314,7 +314,7 @@ break; case DxEGShDevData_DrvFuncs: DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_DrvFuncs\n"); - retVal = (DWORD_PTR) &PDev->DriverFunctions; + retVal = (DWORD_PTR) &PDev->DevEdd.DriverFunctions; break; case DxEGShDevData_dhpdev: DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_dhpdev\n"); @@ -322,7 +322,7 @@ break; case DxEGShDevData_eddg: DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_eddg\n"); - retVal = (DWORD_PTR) PDev->pEDDgpl; + retVal = (DWORD_PTR) PDev->DevEdd.pEDDgpl; break; case DxEGShDevData_dd_nCount: DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_dd_nCount\n"); Index: subsystems/win32/win32k/objects/device.c =================================================================== --- subsystems/win32/win32k/objects/device.c (revision 43176) +++ subsystems/win32/win32k/objects/device.c (working copy) @@ -308,7 +308,7 @@ DPRINT("Building DDI Functions\n"); /* Construct DDI driver function dispatch table */ - if (!DRIVER_BuildDDIFunctions(&DED, &PrimarySurface.DriverFunctions)) + if (!DRIVER_BuildDDIFunctions(&DED, &PrimarySurface.DevEdd.DriverFunctions)) { ObDereferenceObject(PrimarySurface.VideoFileObject); DPRINT1("BuildDDIFunctions failed\n"); @@ -320,7 +320,7 @@ PrimarySurface.DMW.dmSize = sizeof (PrimarySurface.DMW); if (SetupDevMode(&PrimarySurface.DMW, DisplayNumber)) { - PrimarySurface.dhpdev = PrimarySurface.DriverFunctions.EnablePDEV( + PrimarySurface.dhpdev = PrimarySurface.DevEdd.DriverFunctions.EnablePDEV( &PrimarySurface.DMW, L"", HS_DDI_MAX, @@ -347,7 +347,7 @@ { RtlZeroMemory(&(PrimarySurface.DMW), sizeof(DEVMODEW)); PrimarySurface.DMW.dmSize = sizeof (PrimarySurface.DMW); - PrimarySurface.dhpdev = PrimarySurface.DriverFunctions.EnablePDEV( + PrimarySurface.dhpdev = PrimarySurface.DevEdd.DriverFunctions.EnablePDEV( &PrimarySurface.DMW, L"", HS_DDI_MAX, @@ -405,7 +405,7 @@ DPRINT("calling completePDev\n"); /* Complete initialization of the physical device */ - PrimarySurface.DriverFunctions.CompletePDEV( + PrimarySurface.DevEdd.DriverFunctions.CompletePDEV( PrimarySurface.dhpdev, (HDEV)&PrimarySurface); @@ -422,12 +422,13 @@ PrimarySurface.ppdevNext = NULL; // Fixme! We need to support more than display drvs. PrimarySurface.ppdevParent = NULL; // Always NULL if primary. PrimarySurface.pGraphicsDevice = NULL; // Fixme! - PrimarySurface.pEDDgpl = ExAllocatePoolWithTag(PagedPool, sizeof(EDD_DIRECTDRAW_GLOBAL), TAG_EDDGBL); - if (PrimarySurface.pEDDgpl) + PrimarySurface.DevEdd.pEDDgpl = ExAllocatePoolWithTag(PagedPool, sizeof(EDD_DIRECTDRAW_GLOBAL), TAG_EDDGBL); + if (PrimarySurface.DevEdd.pEDDgpl) { - RtlZeroMemory( PrimarySurface.pEDDgpl ,sizeof(EDD_DIRECTDRAW_GLOBAL)); + RtlZeroMemory( PrimarySurface.DevEdd.pEDDgpl ,sizeof(EDD_DIRECTDRAW_GLOBAL)); ret = TRUE; } + PrimarySurface.DevEdd.pEDDgpl->dhpdev = PrimarySurface.dhpdev ; goto cleanup; } @@ -519,17 +520,17 @@ DPRINT("calling EnableSurface\n"); /* Enable the drawing surface */ PrimarySurface.pSurface = - PrimarySurface.DriverFunctions.EnableSurface(PrimarySurface.dhpdev); + PrimarySurface.DevEdd.DriverFunctions.EnableSurface(PrimarySurface.dhpdev); if (NULL == PrimarySurface.pSurface) { /* PrimarySurface.DriverFunctions.AssertMode(PrimarySurface.dhpdev, FALSE);*/ - PrimarySurface.DriverFunctions.DisablePDEV(PrimarySurface.dhpdev); + PrimarySurface.DevEdd.DriverFunctions.DisablePDEV(PrimarySurface.dhpdev); ObDereferenceObject(PrimarySurface.VideoFileObject); DPRINT1("DrvEnableSurface failed\n"); return FALSE; } - PrimarySurface.DriverFunctions.AssertMode(PrimarySurface.dhpdev, TRUE); + PrimarySurface.DevEdd.DriverFunctions.AssertMode(PrimarySurface.dhpdev, TRUE); calledFromUser = UserIsEntered(); //fixme: possibly upgrade a shared lock if (!calledFromUser) @@ -554,7 +555,7 @@ gpsi->ptCursor.y = (SurfaceRect.bottom - SurfaceRect.top) / 2; /* Give the PDEV a MovePointer function */ - PrimarySurface.pfnMovePointer = PrimarySurface.DriverFunctions.MovePointer; + PrimarySurface.pfnMovePointer = PrimarySurface.DevEdd.DriverFunctions.MovePointer; if (!PrimarySurface.pfnMovePointer) PrimarySurface.pfnMovePointer = EngMovePointer; @@ -599,9 +600,9 @@ */ DPRINT("Reseting display\n" ); - PrimarySurface.DriverFunctions.AssertMode(PrimarySurface.dhpdev, FALSE); - PrimarySurface.DriverFunctions.DisableSurface(PrimarySurface.dhpdev); - PrimarySurface.DriverFunctions.DisablePDEV(PrimarySurface.dhpdev); + PrimarySurface.DevEdd.DriverFunctions.AssertMode(PrimarySurface.dhpdev, FALSE); + PrimarySurface.DevEdd.DriverFunctions.DisableSurface(PrimarySurface.dhpdev); + PrimarySurface.DevEdd.DriverFunctions.DisablePDEV(PrimarySurface.dhpdev); PrimarySurface.PreparedDriver = FALSE; KeSetEvent(&VideoDriverNeedsPreparation, 1, FALSE); KeResetEvent(&VideoDriverPrepared); @@ -621,9 +622,9 @@ // should return the number of fonts it supports. if ( pDevObj->devinfo.cFonts == -1) { - if (pDevObj->DriverFunctions.QueryFont) + if (pDevObj->DevEdd.DriverFunctions.QueryFont) pDevObj->devinfo.cFonts = - (ULONG)pDevObj->DriverFunctions.QueryFont(pDevObj->dhpdev, 0, 0, &Junk); + (ULONG)pDevObj->DevEdd.DriverFunctions.QueryFont(pDevObj->dhpdev, 0, 0, &Junk); else pDevObj->devinfo.cFonts = 0; } Index: subsystems/win32/win32k/objects/gdibatch.c =================================================================== --- subsystems/win32/win32k/objects/gdibatch.c (revision 43176) +++ subsystems/win32/win32k/objects/gdibatch.c (working copy) @@ -20,19 +20,19 @@ DoDeviceSync( SURFOBJ *Surface, PRECTL Rect, FLONG fl) { PPDEVOBJ Device = (PDEVOBJ*)Surface->hdev; -// No punting and "Handle to a surface, provided that the surface is device-managed. +// No punting and "Handle to a surface, provided that the surface is device-managed. // Otherwise, dhsurf is zero". if (!(Device->flFlags & PDEV_DRIVER_PUNTED_CALL) && (Surface->dhsurf)) { - if (Device->DriverFunctions.SynchronizeSurface) + if (Device->DevEdd.DriverFunctions.SynchronizeSurface) { - Device->DriverFunctions.SynchronizeSurface(Surface, Rect, fl); + Device->DevEdd.DriverFunctions.SynchronizeSurface(Surface, Rect, fl); } else { - if (Device->DriverFunctions.Synchronize) + if (Device->DevEdd.DriverFunctions.Synchronize) { - Device->DriverFunctions.Synchronize(Surface->dhpdev, Rect); + Device->DevEdd.DriverFunctions.Synchronize(Surface->dhpdev, Rect); } } } Index: subsystems/win32/win32k/objects/icm.c =================================================================== --- subsystems/win32/win32k/objects/icm.c (revision 43176) +++ subsystems/win32/win32k/objects/icm.c (working copy) @@ -241,8 +241,8 @@ (pGDev->devinfo.iDitherFormat == BMF_24BPP) || (pGDev->devinfo.iDitherFormat == BMF_32BPP)) { - if (pGDev->DriverFunctions.IcmSetDeviceGammaRamp) - return pGDev->DriverFunctions.IcmSetDeviceGammaRamp( pGDev->dhpdev, + if (pGDev->DevEdd.DriverFunctions.IcmSetDeviceGammaRamp) + return pGDev->DevEdd.DriverFunctions.IcmSetDeviceGammaRamp( pGDev->dhpdev, IGRF_RGB_256WORDS, pGDev->pvGammaRamp); @@ -266,7 +266,7 @@ // PALOBJ_cGetColors check mode flags and update Gamma Correction. // Set the HDEV to pal and go. palGDI->hPDev = hPDev; - Ret = pGDev->DriverFunctions.SetPalette(pGDev->dhpdev, + Ret = pGDev->DevEdd.DriverFunctions.SetPalette(pGDev->dhpdev, palPtr, 0, 0, @@ -301,7 +301,7 @@ (pGDev->devinfo.iDitherFormat == BMF_24BPP) || (pGDev->devinfo.iDitherFormat == BMF_32BPP)) { - if (!pGDev->DriverFunctions.IcmSetDeviceGammaRamp) + if (!pGDev->DevEdd.DriverFunctions.IcmSetDeviceGammaRamp) { // No driver support if (!(pGDev->devinfo.flGraphicsCaps2 & GCAPS2_CHANGEGAMMARAMP)) { // Driver does not support Gamma Ramp, so test to see we Index: subsystems/win32/win32k/objects/print.c =================================================================== --- subsystems/win32/win32k/objects/print.c (revision 43176) +++ subsystems/win32/win32k/objects/print.c (working copy) @@ -119,7 +119,7 @@ /* FIXME - Handle psurf == NULL !!!!!! */ - if ( NULL == dc->ppdev->DriverFunctions.Escape ) + if ( NULL == dc->ppdev->DevEdd.DriverFunctions.Escape ) { Result = IntEngExtEscape( &psurf->SurfObj, @@ -131,7 +131,7 @@ } else { - Result = dc->ppdev->DriverFunctions.Escape( + Result = dc->ppdev->DevEdd.DriverFunctions.Escape( &psurf->SurfObj, Escape, InSize, Index: subsystems/win32/win32k/objects/wingl.c =================================================================== --- subsystems/win32/win32k/objects/wingl.c (revision 43176) +++ subsystems/win32/win32k/objects/wingl.c (working copy) @@ -36,9 +36,9 @@ return 0; } - if (ppdev->DriverFunctions.DescribePixelFormat) + if (ppdev->DevEdd.DriverFunctions.DescribePixelFormat) { - Ret = ppdev->DriverFunctions.DescribePixelFormat( + Ret = ppdev->DevEdd.DriverFunctions.DescribePixelFormat( ppdev->dhpdev, 1, 0, @@ -91,9 +91,9 @@ goto Exit; } - if (ppdev->DriverFunctions.DescribePixelFormat) + if (ppdev->DevEdd.DriverFunctions.DescribePixelFormat) { - Ret = ppdev->DriverFunctions.DescribePixelFormat( + Ret = ppdev->DevEdd.DriverFunctions.DescribePixelFormat( ppdev->dhpdev, PixelFormat, sizeof(PIXELFORMATDESCRIPTOR), @@ -178,9 +178,9 @@ goto Exit; } - if (ppdev->DriverFunctions.SetPixelFormat) + if (ppdev->DevEdd.DriverFunctions.SetPixelFormat) { - Ret = ppdev->DriverFunctions.SetPixelFormat( + Ret = ppdev->DevEdd.DriverFunctions.SetPixelFormat( pso, ipfd, hWnd);