mirror of
https://github.com/reactos/reactos.git
synced 2024-11-27 05:23:33 +08:00
[WIN32SS:ENG] Call display mouse functions only when using hardware pointer
Otherwise, use software pointer functions. This fixes graphical glitches on cursor change, when the display driver provides accelerated pointer functions (DrvSetPointerShape/DrvMovePointer), but refuses to handle a certain cursor. These graphical glitches may be reproduced: - by using Voodoo driver SFFT 1.9 - by using framebuf_new.dll instead of framebuf.dll - by using the panning driver (setting DefaultSettings.XPanning and DefaultSettings.YPanning in registry)
This commit is contained in:
parent
e6841944b8
commit
162de4a0d8
@ -84,7 +84,10 @@ MouseSafetyOnDrawStart(
|
||||
&& pgp->Exclude.top <= HazardY2)
|
||||
{
|
||||
ppdev->SafetyRemoveLevel = ppdev->SafetyRemoveCount;
|
||||
ppdev->pfnMovePointer(&ppdev->pSurface->SurfObj, -1, -1, NULL);
|
||||
if (ppdev->flFlags & PDEV_HARDWARE_POINTER)
|
||||
ppdev->pfnMovePointer(&ppdev->pSurface->SurfObj, -1, -1, NULL);
|
||||
else if (ppdev->flFlags & PDEV_SOFTWARE_POINTER)
|
||||
EngMovePointer(&ppdev->pSurface->SurfObj, -1, -1, NULL);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@ -116,10 +119,16 @@ MouseSafetyOnDrawEnd(
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ppdev->pfnMovePointer(&ppdev->pSurface->SurfObj,
|
||||
gpsi->ptCursor.x,
|
||||
gpsi->ptCursor.y,
|
||||
&pgp->Exclude);
|
||||
if (ppdev->flFlags & PDEV_HARDWARE_POINTER)
|
||||
ppdev->pfnMovePointer(&ppdev->pSurface->SurfObj,
|
||||
gpsi->ptCursor.x,
|
||||
gpsi->ptCursor.y,
|
||||
&pgp->Exclude);
|
||||
else if (ppdev->flFlags & PDEV_SOFTWARE_POINTER)
|
||||
EngMovePointer(&ppdev->pSurface->SurfObj,
|
||||
gpsi->ptCursor.x,
|
||||
gpsi->ptCursor.y,
|
||||
&pgp->Exclude);
|
||||
|
||||
ppdev->SafetyRemoveLevel = 0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user