ULONG APIENTRY IntEngSetPointerShape( IN SURFOBJ *pso, IN SURFOBJ *psoMask, IN SURFOBJ *psoColor, IN XLATEOBJ *pxlo, IN LONG xHot, IN LONG yHot, IN LONG x, IN LONG y, IN RECTL *prcl, IN FLONG fl) { ULONG ulResult = SPS_DECLINE; PFN_DrvSetPointerShape pfnSetPointerShape; PPDEVOBJ ppdev = GDIDEV(pso); pfnSetPointerShape = GDIDEVFUNCS(pso).SetPointerShape; if (pfnSetPointerShape) { ulResult = pfnSetPointerShape(pso, psoMask, psoColor, pxlo, xHot, yHot, x, y, prcl, fl); } /* Check if the driver accepted it */ if (ulResult == SPS_ACCEPT_NOEXCLUDE) { /* Set MovePointer to the driver function */ ppdev->pfnMovePointer = GDIDEVFUNCS(pso).MovePointer; } else { /* Set software pointer */ ulResult = EngSetPointerShape(pso, psoMask, psoColor, pxlo, xHot, yHot, x, y, prcl, fl); /* Set MovePointer to the eng function */ ppdev->pfnMovePointer = EngMovePointer; } return ulResult; }
ULONG NTAPI IntEngSetPointerShape( _In_ SURFOBJ *pso, _In_opt_ SURFOBJ *psoMask, _In_opt_ SURFOBJ *psoColor, _In_opt_ XLATEOBJ *pxlo, _In_ LONG xHot, _In_ LONG yHot, _In_ LONG x, _In_ LONG y, _In_ RECTL *prcl, _In_ FLONG fl) { ULONG ulResult = SPS_DECLINE; PFN_DrvSetPointerShape pfnSetPointerShape; PPDEVOBJ ppdev = GDIDEV(pso); pfnSetPointerShape = GDIDEVFUNCS(pso).SetPointerShape; if (pfnSetPointerShape) { /* Drivers expect to get an XLATEOBJ */ if (pxlo == NULL) pxlo = &gexloTrivial.xlo; /* Call the driver */ ulResult = pfnSetPointerShape(pso, psoMask, psoColor, pxlo, xHot, yHot, x, y, prcl, fl); } /* Check if the driver accepted it */ if (ulResult == SPS_ACCEPT_NOEXCLUDE) { /* Set MovePointer to the driver function */ ppdev->pfnMovePointer = GDIDEVFUNCS(pso).MovePointer; } else { /* Set software pointer */ ulResult = EngSetPointerShape(pso, psoMask, psoColor, pxlo, xHot, yHot, x, y, prcl, fl); /* Set MovePointer to the eng function */ ppdev->pfnMovePointer = EngMovePointer; } return ulResult; }