xfree86: replace two inputInfo.pointer uses with device loops.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Benjamin Tissoires <tissoire@cena.fr>
This commit is contained in:
parent
703baece7e
commit
e48bf3b640
|
@ -242,11 +242,20 @@ xf86RandRSetConfig (ScreenPtr pScreen,
|
||||||
ScrnInfoPtr scrp = XF86SCRNINFO(pScreen);
|
ScrnInfoPtr scrp = XF86SCRNINFO(pScreen);
|
||||||
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
|
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
|
||||||
DisplayModePtr mode;
|
DisplayModePtr mode;
|
||||||
int px, py;
|
int pos[MAXDEVICES][2];
|
||||||
Bool useVirtual = FALSE;
|
Bool useVirtual = FALSE;
|
||||||
Rotation oldRotation = randrp->rotation;
|
Rotation oldRotation = randrp->rotation;
|
||||||
|
DeviceIntPtr dev;
|
||||||
|
Bool view_adjusted = FALSE;
|
||||||
|
|
||||||
|
for (dev = inputInfo.devices; dev; dev = dev->next)
|
||||||
|
{
|
||||||
|
if (!IsMaster(dev) && !IsFloating(dev))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
miPointerGetPosition(dev, &pos[dev->id][0], &pos[dev->id][1]);
|
||||||
|
}
|
||||||
|
|
||||||
miPointerGetPosition(inputInfo.pointer, &px, &py);
|
|
||||||
for (mode = scrp->modes; ; mode = mode->next)
|
for (mode = scrp->modes; ; mode = mode->next)
|
||||||
{
|
{
|
||||||
if (mode->HDisplay == pSize->width &&
|
if (mode->HDisplay == pSize->width &&
|
||||||
|
@ -303,17 +312,31 @@ xf86RandRSetConfig (ScreenPtr pScreen,
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Move the cursor back where it belongs; SwitchMode repositions it
|
* Move the cursor back where it belongs; SwitchMode repositions it
|
||||||
|
* FIXME: duplicated code, see modes/xf86RandR12.c
|
||||||
*/
|
*/
|
||||||
if (pScreen == miPointerCurrentScreen ())
|
for (dev = inputInfo.devices; dev; dev = dev->next)
|
||||||
{
|
{
|
||||||
px = (px >= pScreen->width ? (pScreen->width - 1) : px);
|
if (!IsMaster(dev) && !IsFloating(dev))
|
||||||
py = (py >= pScreen->height ? (pScreen->height - 1) : py);
|
continue;
|
||||||
|
|
||||||
xf86SetViewport(pScreen, px, py);
|
if (pScreen == miPointerGetScreen(dev)) {
|
||||||
|
int px = pos[dev->id][0];
|
||||||
|
int py = pos[dev->id][1];
|
||||||
|
|
||||||
(*pScreen->SetCursorPosition) (inputInfo.pointer, pScreen, px, py, FALSE);
|
px = (px >= pScreen->width ? (pScreen->width - 1) : px);
|
||||||
|
py = (py >= pScreen->height ? (pScreen->height - 1) : py);
|
||||||
|
|
||||||
|
/* Setting the viewpoint makes only sense on one device */
|
||||||
|
if (!view_adjusted && IsMaster(dev)) {
|
||||||
|
xf86SetViewport(pScreen, px, py);
|
||||||
|
view_adjusted = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
(*pScreen->SetCursorPosition) (dev, pScreen, px, py, FALSE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
|
@ -584,10 +584,12 @@ xf86RandR12SetConfig (ScreenPtr pScreen,
|
||||||
ScrnInfoPtr scrp = XF86SCRNINFO(pScreen);
|
ScrnInfoPtr scrp = XF86SCRNINFO(pScreen);
|
||||||
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
|
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
|
||||||
DisplayModePtr mode;
|
DisplayModePtr mode;
|
||||||
int px, py;
|
int pos[MAXDEVICES][2];
|
||||||
Bool useVirtual = FALSE;
|
Bool useVirtual = FALSE;
|
||||||
int maxX = 0, maxY = 0;
|
int maxX = 0, maxY = 0;
|
||||||
Rotation oldRotation = randrp->rotation;
|
Rotation oldRotation = randrp->rotation;
|
||||||
|
DeviceIntPtr dev;
|
||||||
|
Bool view_adjusted = FALSE;
|
||||||
|
|
||||||
randrp->rotation = rotation;
|
randrp->rotation = rotation;
|
||||||
|
|
||||||
|
@ -597,7 +599,14 @@ xf86RandR12SetConfig (ScreenPtr pScreen,
|
||||||
randrp->virtualY = scrp->virtualY;
|
randrp->virtualY = scrp->virtualY;
|
||||||
}
|
}
|
||||||
|
|
||||||
miPointerGetPosition (inputInfo.pointer, &px, &py);
|
for (dev = inputInfo.devices; dev; dev = dev->next)
|
||||||
|
{
|
||||||
|
if (!IsMaster(dev) && !IsFloating(dev))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
miPointerGetPosition(dev, &pos[dev->id][0], &pos[dev->id][1]);
|
||||||
|
}
|
||||||
|
|
||||||
for (mode = scrp->modes; ; mode = mode->next)
|
for (mode = scrp->modes; ; mode = mode->next)
|
||||||
{
|
{
|
||||||
if (randrp->maxX == 0 || randrp->maxY == 0)
|
if (randrp->maxX == 0 || randrp->maxY == 0)
|
||||||
|
@ -643,15 +652,28 @@ xf86RandR12SetConfig (ScreenPtr pScreen,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Move the cursor back where it belongs; SwitchMode repositions it
|
* Move the cursor back where it belongs; SwitchMode repositions it
|
||||||
|
* FIXME: duplicated code, see modes/xf86RandR12.c
|
||||||
*/
|
*/
|
||||||
if (pScreen == miPointerGetScreen(inputInfo.pointer))
|
for (dev = inputInfo.devices; dev; dev = dev->next)
|
||||||
{
|
{
|
||||||
px = (px >= pScreen->width ? (pScreen->width - 1) : px);
|
if (!IsMaster(dev) && !IsFloating(dev))
|
||||||
py = (py >= pScreen->height ? (pScreen->height - 1) : py);
|
continue;
|
||||||
|
|
||||||
xf86SetViewport(pScreen, px, py);
|
if (pScreen == miPointerGetScreen(dev)) {
|
||||||
|
int px = pos[dev->id][0];
|
||||||
|
int py = pos[dev->id][1];
|
||||||
|
|
||||||
(*pScreen->SetCursorPosition) (inputInfo.pointer, pScreen, px, py, FALSE);
|
px = (px >= pScreen->width ? (pScreen->width - 1) : px);
|
||||||
|
py = (py >= pScreen->height ? (pScreen->height - 1) : py);
|
||||||
|
|
||||||
|
/* Setting the viewpoint makes only sense on one device */
|
||||||
|
if (!view_adjusted && IsMaster(dev)) {
|
||||||
|
xf86SetViewport(pScreen, px, py);
|
||||||
|
view_adjusted = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
(*pScreen->SetCursorPosition) (dev, pScreen, px, py, FALSE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user