[ros-diffs] [jimtabor] 38342: - Use Cursor position from server information. I guess the logic is, one workstation per system with multiple desktops. So we would always have one cursor pointer, not one per desktop.
jimtabor at svn.reactos.org
jimtabor at svn.reactos.org
Thu Dec 25 01:35:03 CET 2008
Author: jimtabor
Date: Wed Dec 24 18:35:02 2008
New Revision: 38342
URL: http://svn.reactos.org/svn/reactos?rev=38342&view=rev
Log:
- Use Cursor position from server information. I guess the logic is, one workstation per system with multiple desktops. So we would always have one cursor pointer, not one per desktop.
Modified:
trunk/reactos/subsystems/win32/win32k/eng/mouse.c
trunk/reactos/subsystems/win32/win32k/include/dc.h
trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c
trunk/reactos/subsystems/win32/win32k/ntuser/input.c
trunk/reactos/subsystems/win32/win32k/objects/dc.c
Modified: trunk/reactos/subsystems/win32/win32k/eng/mouse.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/eng/mouse.c?rev=38342&r1=38341&r2=38342&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/eng/mouse.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/eng/mouse.c [iso-8859-1] Wed Dec 24 18:35:02 2008
@@ -126,9 +126,9 @@
return FALSE;
}
if (pgp->MovePointer)
- pgp->MovePointer(SurfObj, pgp->Pos.x, pgp->Pos.y, &pgp->Exclude);
+ pgp->MovePointer(SurfObj, gpsi->ptCursor.x, gpsi->ptCursor.y, &pgp->Exclude);
else
- EngMovePointer(SurfObj, pgp->Pos.x, pgp->Pos.y, &pgp->Exclude);
+ EngMovePointer(SurfObj, gpsi->ptCursor.x, gpsi->ptCursor.y, &pgp->Exclude);
ppdev->SafetyRemoveLevel = 0;
@@ -169,8 +169,8 @@
/*
* Hide the cours
*/
- pt.x = pgp->Pos.x - pgp->HotSpot.x;
- pt.y = pgp->Pos.y - pgp->HotSpot.y;
+ pt.x = gpsi->ptCursor.x - pgp->HotSpot.x;
+ pt.y = gpsi->ptCursor.y - pgp->HotSpot.y;
if (pgp->SaveSurface != NULL)
@@ -233,8 +233,8 @@
return ;
}
- pt.x = pgp->Pos.x - pgp->HotSpot.x;
- pt.y = pgp->Pos.y - pgp->HotSpot.y;
+ pt.x = gpsi->ptCursor.x - pgp->HotSpot.x;
+ pt.y = gpsi->ptCursor.y - pgp->HotSpot.y;
/*
* Copy the pixels under the cursor to temporary surface.
@@ -402,8 +402,8 @@
* done right after this. It helps IntShowMousePointer. */
if (x != -1)
{
- pgp->Pos.x = x;
- pgp->Pos.y = y;
+ gpsi->ptCursor.x = x;
+ gpsi->ptCursor.y = y;
}
pgp->Size.cx = abs(psoMask->lDelta) << 3;
@@ -552,8 +552,8 @@
{
/* Actually this should be set by 'the other side', but it would be
* done right after this. It helps IntShowMousePointer. */
- pgp->Pos.x = x;
- pgp->Pos.y = y;
+ gpsi->ptCursor.x = x;
+ gpsi->ptCursor.y = y;
IntShowMousePointer(ppdev, pso);
if (prcl != NULL)
{
Modified: trunk/reactos/subsystems/win32/win32k/include/dc.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/include/dc.h?rev=38342&r1=38341&r2=38342&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/dc.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/dc.h [iso-8859-1] Wed Dec 24 18:35:02 2008
@@ -157,7 +157,6 @@
{
/* private GDI pointer handling information, required for software emulation */
BOOL Enabled;
- POINTL Pos;
SIZEL Size;
POINTL HotSpot;
XLATEOBJ *XlateObject;
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c?rev=38342&r1=38341&r2=38342&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/cursoricon.c [iso-8859-1] Wed Dec 24 18:35:02 2008
@@ -44,29 +44,11 @@
static PAGED_LOOKASIDE_LIST gProcessLookasideList;
static LIST_ENTRY gCurIconList;
-/* Look up the location of the cursor in the GDIDEVICE structure
- * when all we know is the window station object
- * Actually doesn't use the window station, but should... */
BOOL FASTCALL
IntGetCursorLocation(PWINSTATION_OBJECT WinSta, POINT *loc)
{
- HDC hDC;
- PDC dc;
- GDIDEVICE *GDIDevice;
-
-#if 1
- /* FIXME - get the screen dc from the window station or desktop */
- if (!(hDC = IntGetScreenDC()))
- return FALSE;
-#endif
-
- if (!(dc = DC_LockDc(hDC)))
- return FALSE;
- GDIDevice = (GDIDEVICE *)dc->pPDev;
- DC_UnlockDc(dc);
-
- loc->x = GDIDevice->Pointer.Pos.x;
- loc->y = GDIDevice->Pointer.Pos.y;
+ loc->x = gpsi->ptCursor.x;
+ loc->y = gpsi->ptCursor.y;
return TRUE;
}
@@ -259,8 +241,8 @@
SurfObj, soMask, soColor, XlateObj,
NewCursor->IconInfo.xHotspot,
NewCursor->IconInfo.yHotspot,
- GDIDEV(SurfObj)->Pointer.Pos.x,
- GDIDEV(SurfObj)->Pointer.Pos.y,
+ gpsi->ptCursor.x,
+ gpsi->ptCursor.y,
&(GDIDEV(SurfObj)->Pointer.Exclude),
SPS_CHANGE);
DPRINT("SetCursor: DrvSetPointerShape() returned %x\n",
@@ -277,8 +259,8 @@
SurfObj, soMask, soColor, XlateObj,
NewCursor->IconInfo.xHotspot,
NewCursor->IconInfo.yHotspot,
- GDIDEV(SurfObj)->Pointer.Pos.x,
- GDIDEV(SurfObj)->Pointer.Pos.y,
+ gpsi->ptCursor.x,
+ gpsi->ptCursor.y,
&(GDIDEV(SurfObj)->Pointer.Exclude),
SPS_CHANGE);
GDIDEV(SurfObj)->Pointer.MovePointer = NULL;
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/input.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/input.c?rev=38342&r1=38341&r2=38342&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/input.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/input.c [iso-8859-1] Wed Dec 24 18:35:02 2008
@@ -1094,8 +1094,8 @@
}
/* Only now, update the info in the GDIDEVICE, so EngMovePointer can
* use the old values to move the pointer image */
- GDIDEV(SurfObj)->Pointer.Pos.x = MousePos.x;
- GDIDEV(SurfObj)->Pointer.Pos.y = MousePos.y;
+ gpsi->ptCursor.x = MousePos.x;
+ gpsi->ptCursor.y = MousePos.y;
BITMAPOBJ_UnlockBitmap(BitmapObj);
}
Modified: trunk/reactos/subsystems/win32/win32k/objects/dc.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/objects/dc.c?rev=38342&r1=38341&r2=38342&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/dc.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/dc.c [iso-8859-1] Wed Dec 24 18:35:02 2008
@@ -685,8 +685,8 @@
EngEraseSurface(SurfObj, &SurfaceRect, 0); */
/* Put the pointer in the center of the screen */
- GDIDEV(SurfObj)->Pointer.Pos.x = (SurfaceRect.right - SurfaceRect.left) / 2;
- GDIDEV(SurfObj)->Pointer.Pos.y = (SurfaceRect.bottom - SurfaceRect.top) / 2;
+ gpsi->ptCursor.x = (SurfaceRect.right - SurfaceRect.left) / 2;
+ gpsi->ptCursor.y = (SurfaceRect.bottom - SurfaceRect.top) / 2;
EngUnlockSurface(SurfObj);
co_IntShowDesktop(IntGetActiveDesktop(), SurfSize.cx, SurfSize.cy);
More information about the Ros-diffs
mailing list