mirror of
https://github.com/reactos/reactos.git
synced 2024-10-04 08:25:53 +00:00
[WIN32K]
- move IntEngMovePointer code into GreMovePointer - Delete the mouse cursor before mode switch, to force setting a new one after a mode switch. Fixes cursor artifacts after mode change. - Update TODO.txt svn path=/branches/reactos-yarotows/; revision=46976
This commit is contained in:
parent
634c608726
commit
2250e691f1
|
@ -11,7 +11,6 @@ requirements before it can be handled.
|
|||
Before the merge:
|
||||
-----------------
|
||||
# Fix mouse pointer regression
|
||||
# Hide the mouse pointer during mode switch
|
||||
# Resize the desktop window after mode switch
|
||||
# Update mouse area after mode switch
|
||||
# Invalidate the whole Window content after mode switch
|
||||
|
|
|
@ -514,20 +514,6 @@ EngMovePointer(
|
|||
}
|
||||
}
|
||||
|
||||
VOID APIENTRY
|
||||
IntEngMovePointer(
|
||||
IN SURFOBJ *pso,
|
||||
IN LONG x,
|
||||
IN LONG y,
|
||||
IN RECTL *prcl)
|
||||
{
|
||||
PPDEVOBJ ppdev = (PPDEVOBJ)pso->hdev;
|
||||
if(ppdev->SafetyRemoveLevel)
|
||||
return ;
|
||||
|
||||
ppdev->pfnMovePointer(pso, x, y, prcl);
|
||||
}
|
||||
|
||||
ULONG APIENTRY
|
||||
IntEngSetPointerShape(
|
||||
IN SURFOBJ *pso,
|
||||
|
@ -694,14 +680,22 @@ GreMovePointer(
|
|||
}
|
||||
ASSERT(pdc->dctype == DCTYPE_DIRECT);
|
||||
|
||||
/* Acquire PDEV lock */
|
||||
EngAcquireSemaphore(pdc->ppdev->hsemDevLock);
|
||||
/* Store the cursor exclude position in the PDEV */
|
||||
prcl = &pdc->ppdev->Pointer.Exclude;
|
||||
|
||||
/* Call Eng/Drv function */
|
||||
IntEngMovePointer(&pdc->ppdev->pSurface->SurfObj, x, y, prcl);
|
||||
/* Check if we need to move it */
|
||||
if(pdc->ppdev->SafetyRemoveLevel == 0)
|
||||
{
|
||||
/* Store the cursor exclude position in the PDEV */
|
||||
prcl = &pdc->ppdev->Pointer.Exclude;
|
||||
|
||||
/* Call Eng/Drv function */
|
||||
pdc->ppdev->pfnMovePointer(&pdc->ppdev->pSurface->SurfObj, x, y, prcl);
|
||||
}
|
||||
|
||||
/* Release PDEV lock */
|
||||
EngReleaseSemaphore(pdc->ppdev->hsemDevLock);
|
||||
|
||||
/* Unlock the DC */
|
||||
DC_UnlockDc(pdc);
|
||||
}
|
||||
|
|
|
@ -674,6 +674,7 @@ NtUserEnumDisplaySettings(
|
|||
|
||||
BOOL APIENTRY UserClipCursor(RECTL *prcl);
|
||||
VOID APIENTRY UserRedrawDesktop();
|
||||
HCURSOR FASTCALL UserSetCursor(PCURICON_OBJECT NewCursor, BOOL ForceChange);
|
||||
|
||||
LONG
|
||||
APIENTRY
|
||||
|
@ -753,7 +754,17 @@ UserChangeDisplaySettings(
|
|||
{
|
||||
ULONG ulResult;
|
||||
|
||||
if (!PDEVOBJ_bSwitchMode(ppdev, pdm))
|
||||
/* Remove mouse pointer */
|
||||
UserSetCursor(NULL, TRUE);
|
||||
|
||||
/* Do the mode switch */
|
||||
ulResult = PDEVOBJ_bSwitchMode(ppdev, pdm);
|
||||
|
||||
/* Restore mouse pointer */
|
||||
UserSetCursorPos(gpsi->ptCursor.x, gpsi->ptCursor.y);
|
||||
|
||||
/* Check for failure */
|
||||
if (!ulResult)
|
||||
{
|
||||
DPRINT1("failed to set mode\n");
|
||||
lResult = (lResult == DISP_CHANGE_NOTUPDATED) ?
|
||||
|
@ -765,11 +776,11 @@ UserChangeDisplaySettings(
|
|||
/* Update the system metrics */
|
||||
InitMetrics();
|
||||
|
||||
//IntvGetDeviceCaps(&PrimarySurface, &GdiHandleTable->DevCaps);
|
||||
|
||||
/* Remove all cursor clipping */
|
||||
UserClipCursor(NULL);
|
||||
|
||||
//IntvGetDeviceCaps(&PrimarySurface, &GdiHandleTable->DevCaps);
|
||||
|
||||
pdesk = IntGetActiveDesktop();
|
||||
//IntHideDesktop(pdesk);
|
||||
|
||||
|
|
Loading…
Reference in a new issue