Clean up DeviceIntPtr, prepare for Server 1.4 ABI. Move sprite-related
information into a new SpriteInfoRec, remove isMPDev flag.
This commit is contained in:
parent
e54311395e
commit
5f9c10e8da
|
@ -101,7 +101,7 @@ ProcXQueryDevicePointer(register ClientPtr client)
|
||||||
if (pDev->valuator->motionHintWindow)
|
if (pDev->valuator->motionHintWindow)
|
||||||
MaybeStopHint(pDev, client);
|
MaybeStopHint(pDev, client);
|
||||||
|
|
||||||
pSprite = pDev->pSprite;
|
pSprite = pDev->spriteInfo->sprite;
|
||||||
rep.repType = X_Reply;
|
rep.repType = X_Reply;
|
||||||
rep.RepType = X_QueryDevicePointer;
|
rep.RepType = X_QueryDevicePointer;
|
||||||
rep.length = 0;
|
rep.length = 0;
|
||||||
|
@ -111,7 +111,7 @@ ProcXQueryDevicePointer(register ClientPtr client)
|
||||||
rep.rootX = pSprite->hot.x;
|
rep.rootX = pSprite->hot.x;
|
||||||
rep.rootY = pSprite->hot.y;
|
rep.rootY = pSprite->hot.y;
|
||||||
rep.child = None;
|
rep.child = None;
|
||||||
rep.shared = (pDev->isMPDev) ? xFalse : xTrue;
|
rep.shared = (pDev->spriteInfo->spriteOwner) ? xFalse : xTrue;
|
||||||
|
|
||||||
if (pSprite->hot.pScreen == pWin->drawable.pScreen)
|
if (pSprite->hot.pScreen == pWin->drawable.pScreen)
|
||||||
{
|
{
|
||||||
|
|
|
@ -102,7 +102,7 @@ ProcXWarpDevicePointer(register ClientPtr client)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pSprite = pDev->pSprite;
|
pSprite = pDev->spriteInfo->sprite;
|
||||||
x = pSprite->hotPhys.x;
|
x = pSprite->hotPhys.x;
|
||||||
y = pSprite->hotPhys.y;
|
y = pSprite->hotPhys.y;
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,13 @@ AddInputDevice(DeviceProc deviceProc, Bool autoStart)
|
||||||
dev->inited = FALSE;
|
dev->inited = FALSE;
|
||||||
dev->enabled = FALSE;
|
dev->enabled = FALSE;
|
||||||
|
|
||||||
|
/* sprite defaults */
|
||||||
|
dev->spriteInfo = (SpriteInfoPtr)xcalloc(sizeof(SpriteInfoRec), 1);
|
||||||
|
if (!dev->spriteInfo)
|
||||||
|
return (DeviceIntPtr)NULL;
|
||||||
|
dev->spriteInfo->sprite = NULL;
|
||||||
|
dev->spriteInfo->spriteOwner = FALSE;
|
||||||
|
|
||||||
for (prev = &inputInfo.off_devices; *prev; prev = &(*prev)->next)
|
for (prev = &inputInfo.off_devices; *prev; prev = &(*prev)->next)
|
||||||
;
|
;
|
||||||
*prev = dev;
|
*prev = dev;
|
||||||
|
@ -173,7 +180,7 @@ EnableDevice(DeviceIntPtr dev)
|
||||||
dev->enabled = TRUE;
|
dev->enabled = TRUE;
|
||||||
*prev = dev->next;
|
*prev = dev->next;
|
||||||
|
|
||||||
if (IsPointerDevice(dev) && dev->isMPDev)
|
if (IsPointerDevice(dev) && dev->spriteInfo->spriteOwner)
|
||||||
InitializeSprite(dev, GetCurrentRootWindow());
|
InitializeSprite(dev, GetCurrentRootWindow());
|
||||||
else
|
else
|
||||||
PairDevices(NULL, inputInfo.pointer, dev);
|
PairDevices(NULL, inputInfo.pointer, dev);
|
||||||
|
@ -360,7 +367,7 @@ InitCoreDevices()
|
||||||
dev->coreGrab.ActivateGrab = ActivateKeyboardGrab;
|
dev->coreGrab.ActivateGrab = ActivateKeyboardGrab;
|
||||||
dev->coreGrab.DeactivateGrab = DeactivateKeyboardGrab;
|
dev->coreGrab.DeactivateGrab = DeactivateKeyboardGrab;
|
||||||
dev->coreEvents = FALSE;
|
dev->coreEvents = FALSE;
|
||||||
dev->spriteOwner = FALSE;
|
dev->spriteInfo->spriteOwner = FALSE;
|
||||||
if (!AllocateDevicePrivate(dev, CoreDevicePrivatesIndex))
|
if (!AllocateDevicePrivate(dev, CoreDevicePrivatesIndex))
|
||||||
FatalError("Couldn't allocate keyboard devPrivates\n");
|
FatalError("Couldn't allocate keyboard devPrivates\n");
|
||||||
dev->devPrivates[CoreDevicePrivatesIndex].ptr = NULL;
|
dev->devPrivates[CoreDevicePrivatesIndex].ptr = NULL;
|
||||||
|
@ -542,7 +549,7 @@ CloseDevice(DeviceIntPtr dev)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (DevHasCursor(dev))
|
if (DevHasCursor(dev))
|
||||||
xfree((pointer)dev->pSprite);
|
xfree((pointer)dev->spriteInfo->sprite);
|
||||||
|
|
||||||
/* a client may have the device set as client pointer */
|
/* a client may have the device set as client pointer */
|
||||||
for (j = 0; j < currentMaxClients; j++)
|
for (j = 0; j < currentMaxClients; j++)
|
||||||
|
@ -556,6 +563,7 @@ CloseDevice(DeviceIntPtr dev)
|
||||||
|
|
||||||
xfree(dev->coreGrab.sync.event);
|
xfree(dev->coreGrab.sync.event);
|
||||||
xfree(dev->deviceGrab.sync.event);
|
xfree(dev->deviceGrab.sync.event);
|
||||||
|
xfree(dev->spriteInfo);
|
||||||
xfree(dev);
|
xfree(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2009,14 +2017,14 @@ PairDevices(ClientPtr client, DeviceIntPtr ptr, DeviceIntPtr kbd)
|
||||||
else if (pairingClient != client)
|
else if (pairingClient != client)
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
if (kbd->spriteOwner)
|
if (kbd->spriteInfo->spriteOwner)
|
||||||
{
|
{
|
||||||
xfree(kbd->pSprite);
|
xfree(kbd->spriteInfo->sprite);
|
||||||
kbd->pSprite = NULL;
|
kbd->spriteInfo->sprite = NULL;
|
||||||
kbd->spriteOwner = FALSE;
|
kbd->spriteInfo->spriteOwner = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
kbd->pSprite = ptr->pSprite;
|
kbd->spriteInfo->sprite = ptr->spriteInfo->sprite;
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2029,7 +2037,8 @@ GetPairedPointer(DeviceIntPtr kbd)
|
||||||
DeviceIntPtr ptr = inputInfo.devices;
|
DeviceIntPtr ptr = inputInfo.devices;
|
||||||
while(ptr)
|
while(ptr)
|
||||||
{
|
{
|
||||||
if (ptr->pSprite == kbd->pSprite && ptr->spriteOwner)
|
if (ptr->spriteInfo->sprite == kbd->spriteInfo->sprite &&
|
||||||
|
ptr->spriteInfo->spriteOwner)
|
||||||
{
|
{
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
@ -2053,7 +2062,7 @@ GetPairedKeyboard(DeviceIntPtr ptr)
|
||||||
{
|
{
|
||||||
if (ptr != dev &&
|
if (ptr != dev &&
|
||||||
IsKeyboardDevice(dev) &&
|
IsKeyboardDevice(dev) &&
|
||||||
ptr->pSprite == dev->pSprite)
|
ptr->spriteInfo->sprite == dev->spriteInfo->sprite)
|
||||||
return dev;
|
return dev;
|
||||||
dev = dev->next;
|
dev = dev->next;
|
||||||
}
|
}
|
||||||
|
@ -2109,7 +2118,7 @@ GuessFreePointerDevice()
|
||||||
while(it)
|
while(it)
|
||||||
{
|
{
|
||||||
/* found device with a sprite? */
|
/* found device with a sprite? */
|
||||||
if (it->spriteOwner)
|
if (it->spriteInfo->spriteOwner)
|
||||||
{
|
{
|
||||||
lastRealPtr = it;
|
lastRealPtr = it;
|
||||||
|
|
||||||
|
@ -2117,7 +2126,8 @@ GuessFreePointerDevice()
|
||||||
while(it2)
|
while(it2)
|
||||||
{
|
{
|
||||||
/* something paired with it? */
|
/* something paired with it? */
|
||||||
if (it != it2 && it2->pSprite == it->pSprite)
|
if (it != it2 &&
|
||||||
|
it2->spriteInfo->sprite == it->spriteInfo->sprite)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
it2 = it2->next;
|
it2 = it2->next;
|
||||||
|
|
133
dix/events.c
133
dix/events.c
|
@ -247,7 +247,7 @@ static int spriteTraceGood;
|
||||||
_X_EXPORT Bool
|
_X_EXPORT Bool
|
||||||
DevHasCursor(DeviceIntPtr pDev)
|
DevHasCursor(DeviceIntPtr pDev)
|
||||||
{
|
{
|
||||||
return (pDev != inputInfo.pointer && pDev->spriteOwner);
|
return (pDev != inputInfo.pointer && pDev->spriteInfo->spriteOwner);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -346,7 +346,7 @@ static void PostNewCursor(DeviceIntPtr pDev);
|
||||||
|
|
||||||
#define SyntheticMotion(dev, x, y) \
|
#define SyntheticMotion(dev, x, y) \
|
||||||
PostSyntheticMotion(dev, x, y, noPanoramiXExtension ? 0 : \
|
PostSyntheticMotion(dev, x, y, noPanoramiXExtension ? 0 : \
|
||||||
dev->pSprite->screen->myNum, \
|
dev->spriteInfo->sprite->screen->myNum, \
|
||||||
syncEvents.playingEvents ? \
|
syncEvents.playingEvents ? \
|
||||||
syncEvents.time.milliseconds : \
|
syncEvents.time.milliseconds : \
|
||||||
currentTime.milliseconds);
|
currentTime.milliseconds);
|
||||||
|
@ -361,7 +361,7 @@ XineramaSetCursorPosition(
|
||||||
ScreenPtr pScreen;
|
ScreenPtr pScreen;
|
||||||
BoxRec box;
|
BoxRec box;
|
||||||
int i;
|
int i;
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
/* x,y are in Screen 0 coordinates. We need to decide what Screen
|
/* x,y are in Screen 0 coordinates. We need to decide what Screen
|
||||||
to send the message too and what the coordinates relative to
|
to send the message too and what the coordinates relative to
|
||||||
|
@ -399,7 +399,7 @@ XineramaSetCursorPosition(
|
||||||
static void
|
static void
|
||||||
XineramaConstrainCursor(DeviceIntPtr pDev)
|
XineramaConstrainCursor(DeviceIntPtr pDev)
|
||||||
{
|
{
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
ScreenPtr pScreen;
|
ScreenPtr pScreen;
|
||||||
BoxRec newBox;
|
BoxRec newBox;
|
||||||
|
|
||||||
|
@ -423,7 +423,7 @@ XineramaCheckPhysLimits(
|
||||||
Bool generateEvents
|
Bool generateEvents
|
||||||
){
|
){
|
||||||
HotSpot new;
|
HotSpot new;
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
if (!cursor)
|
if (!cursor)
|
||||||
return;
|
return;
|
||||||
|
@ -463,7 +463,7 @@ XineramaCheckPhysLimits(
|
||||||
static Bool
|
static Bool
|
||||||
XineramaSetWindowPntrs(DeviceIntPtr pDev, WindowPtr pWin)
|
XineramaSetWindowPntrs(DeviceIntPtr pDev, WindowPtr pWin)
|
||||||
{
|
{
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
if(pWin == WindowTable[0]) {
|
if(pWin == WindowTable[0]) {
|
||||||
memcpy(pSprite->windows, WindowTable,
|
memcpy(pSprite->windows, WindowTable,
|
||||||
|
@ -492,7 +492,7 @@ XineramaCheckVirtualMotion(
|
||||||
QdEventPtr qe,
|
QdEventPtr qe,
|
||||||
WindowPtr pWin)
|
WindowPtr pWin)
|
||||||
{
|
{
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
if (qe)
|
if (qe)
|
||||||
{
|
{
|
||||||
|
@ -564,7 +564,7 @@ static Bool
|
||||||
XineramaCheckMotion(xEvent *xE, DeviceIntPtr pDev)
|
XineramaCheckMotion(xEvent *xE, DeviceIntPtr pDev)
|
||||||
{
|
{
|
||||||
WindowPtr prevSpriteWin;
|
WindowPtr prevSpriteWin;
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
prevSpriteWin = pSprite->win;
|
prevSpriteWin = pSprite->win;
|
||||||
|
|
||||||
|
@ -629,7 +629,7 @@ XineramaConfineCursorToWindow(DeviceIntPtr pDev,
|
||||||
WindowPtr pWin,
|
WindowPtr pWin,
|
||||||
Bool generateEvents)
|
Bool generateEvents)
|
||||||
{
|
{
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
if (syncEvents.playingEvents)
|
if (syncEvents.playingEvents)
|
||||||
{
|
{
|
||||||
|
@ -683,7 +683,7 @@ XineramaConfineCursorToWindow(DeviceIntPtr pDev,
|
||||||
static void
|
static void
|
||||||
XineramaChangeToCursor(DeviceIntPtr pDev, CursorPtr cursor)
|
XineramaChangeToCursor(DeviceIntPtr pDev, CursorPtr cursor)
|
||||||
{
|
{
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
if (cursor != pSprite->current)
|
if (cursor != pSprite->current)
|
||||||
{
|
{
|
||||||
|
@ -723,7 +723,7 @@ ConfineToShape(DeviceIntPtr pDev, RegionPtr shape, int *px, int *py)
|
||||||
BoxRec box;
|
BoxRec box;
|
||||||
int x = *px, y = *py;
|
int x = *px, y = *py;
|
||||||
int incx = 1, incy = 1;
|
int incx = 1, incy = 1;
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
if (POINT_IN_REGION(pSprite->hot.pScreen, shape, x, y, &box))
|
if (POINT_IN_REGION(pSprite->hot.pScreen, shape, x, y, &box))
|
||||||
return;
|
return;
|
||||||
|
@ -764,7 +764,7 @@ CheckPhysLimits(
|
||||||
ScreenPtr pScreen)
|
ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
HotSpot new;
|
HotSpot new;
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
if (!cursor)
|
if (!cursor)
|
||||||
return;
|
return;
|
||||||
|
@ -809,7 +809,7 @@ CheckVirtualMotion(
|
||||||
QdEventPtr qe,
|
QdEventPtr qe,
|
||||||
WindowPtr pWin)
|
WindowPtr pWin)
|
||||||
{
|
{
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
#ifdef PANORAMIX
|
#ifdef PANORAMIX
|
||||||
if(!noPanoramiXExtension) {
|
if(!noPanoramiXExtension) {
|
||||||
|
@ -865,7 +865,7 @@ static void
|
||||||
ConfineCursorToWindow(DeviceIntPtr pDev, WindowPtr pWin, Bool generateEvents, Bool confineToScreen)
|
ConfineCursorToWindow(DeviceIntPtr pDev, WindowPtr pWin, Bool generateEvents, Bool confineToScreen)
|
||||||
{
|
{
|
||||||
ScreenPtr pScreen = pWin->drawable.pScreen;
|
ScreenPtr pScreen = pWin->drawable.pScreen;
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
#ifdef PANORAMIX
|
#ifdef PANORAMIX
|
||||||
if(!noPanoramiXExtension) {
|
if(!noPanoramiXExtension) {
|
||||||
|
@ -894,13 +894,13 @@ ConfineCursorToWindow(DeviceIntPtr pDev, WindowPtr pWin, Bool generateEvents, Bo
|
||||||
_X_EXPORT Bool
|
_X_EXPORT Bool
|
||||||
PointerConfinedToScreen(DeviceIntPtr pDev)
|
PointerConfinedToScreen(DeviceIntPtr pDev)
|
||||||
{
|
{
|
||||||
return pDev->pSprite->confined;
|
return pDev->spriteInfo->sprite->confined;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ChangeToCursor(DeviceIntPtr pDev, CursorPtr cursor)
|
ChangeToCursor(DeviceIntPtr pDev, CursorPtr cursor)
|
||||||
{
|
{
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
#ifdef PANORAMIX
|
#ifdef PANORAMIX
|
||||||
if(!noPanoramiXExtension) {
|
if(!noPanoramiXExtension) {
|
||||||
|
@ -938,7 +938,7 @@ PostNewCursor(DeviceIntPtr pDev)
|
||||||
{
|
{
|
||||||
WindowPtr win;
|
WindowPtr win;
|
||||||
GrabPtr grab = pDev->coreGrab.grab;
|
GrabPtr grab = pDev->coreGrab.grab;
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
CursorPtr pCursor;
|
CursorPtr pCursor;
|
||||||
|
|
||||||
if (syncEvents.playingEvents)
|
if (syncEvents.playingEvents)
|
||||||
|
@ -982,19 +982,19 @@ GetCurrentRootWindow()
|
||||||
_X_EXPORT WindowPtr
|
_X_EXPORT WindowPtr
|
||||||
GetSpriteWindow(DeviceIntPtr pDev)
|
GetSpriteWindow(DeviceIntPtr pDev)
|
||||||
{
|
{
|
||||||
return pDev->pSprite->win;
|
return pDev->spriteInfo->sprite->win;
|
||||||
}
|
}
|
||||||
|
|
||||||
_X_EXPORT CursorPtr
|
_X_EXPORT CursorPtr
|
||||||
GetSpriteCursor(DeviceIntPtr pDev)
|
GetSpriteCursor(DeviceIntPtr pDev)
|
||||||
{
|
{
|
||||||
return pDev->pSprite->current;
|
return pDev->spriteInfo->sprite->current;
|
||||||
}
|
}
|
||||||
|
|
||||||
_X_EXPORT void
|
_X_EXPORT void
|
||||||
GetSpritePosition(DeviceIntPtr pDev, int *px, int *py)
|
GetSpritePosition(DeviceIntPtr pDev, int *px, int *py)
|
||||||
{
|
{
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
*px = pSprite->hotPhys.x;
|
*px = pSprite->hotPhys.x;
|
||||||
*py = pSprite->hotPhys.y;
|
*py = pSprite->hotPhys.y;
|
||||||
}
|
}
|
||||||
|
@ -1004,7 +1004,7 @@ _X_EXPORT int
|
||||||
XineramaGetCursorScreen(DeviceIntPtr pDev)
|
XineramaGetCursorScreen(DeviceIntPtr pDev)
|
||||||
{
|
{
|
||||||
if(!noPanoramiXExtension) {
|
if(!noPanoramiXExtension) {
|
||||||
return pDev->pSprite->screen->myNum;
|
return pDev->spriteInfo->sprite->screen->myNum;
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1049,7 +1049,7 @@ EnqueueEvent(xEvent *xE, DeviceIntPtr device, int count)
|
||||||
QdEventPtr tail = *syncEvents.pendtail;
|
QdEventPtr tail = *syncEvents.pendtail;
|
||||||
QdEventPtr qe;
|
QdEventPtr qe;
|
||||||
xEvent *qxE;
|
xEvent *qxE;
|
||||||
SpritePtr pSprite = device->pSprite;
|
SpritePtr pSprite = device->spriteInfo->sprite;
|
||||||
|
|
||||||
NoticeTime(xE);
|
NoticeTime(xE);
|
||||||
|
|
||||||
|
@ -1146,10 +1146,10 @@ PlayReleasedEvents(void)
|
||||||
if(!noPanoramiXExtension) {
|
if(!noPanoramiXExtension) {
|
||||||
qe->event->u.keyButtonPointer.rootX +=
|
qe->event->u.keyButtonPointer.rootX +=
|
||||||
panoramiXdataPtr[0].x -
|
panoramiXdataPtr[0].x -
|
||||||
panoramiXdataPtr[pDev->pSprite->screen->myNum].x;
|
panoramiXdataPtr[pDev->spriteInfo->sprite->screen->myNum].x;
|
||||||
qe->event->u.keyButtonPointer.rootY +=
|
qe->event->u.keyButtonPointer.rootY +=
|
||||||
panoramiXdataPtr[0].y -
|
panoramiXdataPtr[0].y -
|
||||||
panoramiXdataPtr[pDev->pSprite->screen->myNum].y;
|
panoramiXdataPtr[pDev->spriteInfo->sprite->screen->myNum].y;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
(*qe->device->public.processInputProc)(qe->event, qe->device,
|
(*qe->device->public.processInputProc)(qe->event, qe->device,
|
||||||
|
@ -1241,14 +1241,14 @@ playmore:
|
||||||
if ((grab = dev->coreGrab.grab) && grab->confineTo)
|
if ((grab = dev->coreGrab.grab) && grab->confineTo)
|
||||||
{
|
{
|
||||||
if (grab->confineTo->drawable.pScreen !=
|
if (grab->confineTo->drawable.pScreen !=
|
||||||
dev->pSprite->hotPhys.pScreen)
|
dev->spriteInfo->sprite->hotPhys.pScreen)
|
||||||
dev->pSprite->hotPhys.x =
|
dev->spriteInfo->sprite->hotPhys.x =
|
||||||
dev->pSprite->hotPhys.y = 0;
|
dev->spriteInfo->sprite->hotPhys.y = 0;
|
||||||
ConfineCursorToWindow(dev, grab->confineTo, TRUE, TRUE);
|
ConfineCursorToWindow(dev, grab->confineTo, TRUE, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ConfineCursorToWindow(dev,
|
ConfineCursorToWindow(dev,
|
||||||
WindowTable[dev->pSprite->hotPhys.pScreen->myNum],
|
WindowTable[dev->spriteInfo->sprite->hotPhys.pScreen->myNum],
|
||||||
TRUE, FALSE);
|
TRUE, FALSE);
|
||||||
PostNewCursor(dev);
|
PostNewCursor(dev);
|
||||||
}
|
}
|
||||||
|
@ -1270,13 +1270,13 @@ ScreenRestructured (ScreenPtr pScreen)
|
||||||
if ((grab = pDev->coreGrab.grab) && grab->confineTo)
|
if ((grab = pDev->coreGrab.grab) && grab->confineTo)
|
||||||
{
|
{
|
||||||
if (grab->confineTo->drawable.pScreen
|
if (grab->confineTo->drawable.pScreen
|
||||||
!= pDev->pSprite->hotPhys.pScreen)
|
!= pDev->spriteInfo->sprite->hotPhys.pScreen)
|
||||||
pDev->pSprite->hotPhys.x = pDev->pSprite->hotPhys.y = 0;
|
pDev->spriteInfo->sprite->hotPhys.x = pDev->spriteInfo->sprite->hotPhys.y = 0;
|
||||||
ConfineCursorToWindow(pDev, grab->confineTo, TRUE, TRUE);
|
ConfineCursorToWindow(pDev, grab->confineTo, TRUE, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ConfineCursorToWindow(pDev,
|
ConfineCursorToWindow(pDev,
|
||||||
WindowTable[pDev->pSprite->hotPhys.pScreen->myNum],
|
WindowTable[pDev->spriteInfo->sprite->hotPhys.pScreen->myNum],
|
||||||
TRUE, FALSE);
|
TRUE, FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1322,13 +1322,14 @@ ActivatePointerGrab(DeviceIntPtr mouse, GrabPtr grab,
|
||||||
{
|
{
|
||||||
WindowPtr oldWin = (mouse->coreGrab.grab) ?
|
WindowPtr oldWin = (mouse->coreGrab.grab) ?
|
||||||
mouse->coreGrab.grab->window
|
mouse->coreGrab.grab->window
|
||||||
: mouse->pSprite->win;
|
: mouse->spriteInfo->sprite->win;
|
||||||
|
|
||||||
if (grab->confineTo)
|
if (grab->confineTo)
|
||||||
{
|
{
|
||||||
if (grab->confineTo->drawable.pScreen
|
if (grab->confineTo->drawable.pScreen
|
||||||
!= mouse->pSprite->hotPhys.pScreen)
|
!= mouse->spriteInfo->sprite->hotPhys.pScreen)
|
||||||
mouse->pSprite->hotPhys.x = mouse->pSprite->hotPhys.y = 0;
|
mouse->spriteInfo->sprite->hotPhys.x =
|
||||||
|
mouse->spriteInfo->sprite->hotPhys.y = 0;
|
||||||
ConfineCursorToWindow(mouse, grab->confineTo, FALSE, TRUE);
|
ConfineCursorToWindow(mouse, grab->confineTo, FALSE, TRUE);
|
||||||
}
|
}
|
||||||
DoEnterLeaveEvents(mouse, oldWin, grab->window, NotifyGrab);
|
DoEnterLeaveEvents(mouse, oldWin, grab->window, NotifyGrab);
|
||||||
|
@ -1362,7 +1363,7 @@ DeactivatePointerGrab(DeviceIntPtr mouse)
|
||||||
dev->coreGrab.sync.other = NullGrab;
|
dev->coreGrab.sync.other = NullGrab;
|
||||||
}
|
}
|
||||||
DoEnterLeaveEvents(mouse, grab->window,
|
DoEnterLeaveEvents(mouse, grab->window,
|
||||||
mouse->pSprite->win, NotifyUngrab);
|
mouse->spriteInfo->sprite->win, NotifyUngrab);
|
||||||
if (grab->confineTo)
|
if (grab->confineTo)
|
||||||
ConfineCursorToWindow(mouse, ROOT, FALSE, FALSE);
|
ConfineCursorToWindow(mouse, ROOT, FALSE, FALSE);
|
||||||
PostNewCursor(mouse);
|
PostNewCursor(mouse);
|
||||||
|
@ -1381,7 +1382,7 @@ ActivateKeyboardGrab(DeviceIntPtr keybd, GrabPtr grab, TimeStamp time, Bool pass
|
||||||
else if (keybd->focus)
|
else if (keybd->focus)
|
||||||
oldWin = keybd->focus->win;
|
oldWin = keybd->focus->win;
|
||||||
else
|
else
|
||||||
oldWin = keybd->pSprite->win;
|
oldWin = keybd->spriteInfo->sprite->win;
|
||||||
if (oldWin == FollowKeyboardWin)
|
if (oldWin == FollowKeyboardWin)
|
||||||
oldWin = inputInfo.keyboard->focus->win;
|
oldWin = inputInfo.keyboard->focus->win;
|
||||||
if (keybd->valuator)
|
if (keybd->valuator)
|
||||||
|
@ -1403,7 +1404,7 @@ DeactivateKeyboardGrab(DeviceIntPtr keybd)
|
||||||
GrabPtr grab = keybd->coreGrab.grab;
|
GrabPtr grab = keybd->coreGrab.grab;
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
WindowPtr focusWin = keybd->focus ? keybd->focus->win
|
WindowPtr focusWin = keybd->focus ? keybd->focus->win
|
||||||
: keybd->pSprite->win;
|
: keybd->spriteInfo->sprite->win;
|
||||||
|
|
||||||
if (focusWin == FollowKeyboardWin)
|
if (focusWin == FollowKeyboardWin)
|
||||||
focusWin = inputInfo.keyboard->focus->win;
|
focusWin = inputInfo.keyboard->focus->win;
|
||||||
|
@ -1883,7 +1884,7 @@ FixUpEventFromWindow(
|
||||||
Window child,
|
Window child,
|
||||||
Bool calcChild)
|
Bool calcChild)
|
||||||
{
|
{
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
if (calcChild)
|
if (calcChild)
|
||||||
{
|
{
|
||||||
|
@ -2039,7 +2040,7 @@ static Bool
|
||||||
PointInBorderSize(WindowPtr pWin, int x, int y)
|
PointInBorderSize(WindowPtr pWin, int x, int y)
|
||||||
{
|
{
|
||||||
BoxRec box;
|
BoxRec box;
|
||||||
SpritePtr pSprite = inputInfo.pointer->pSprite;
|
SpritePtr pSprite = inputInfo.pointer->spriteInfo->sprite;
|
||||||
|
|
||||||
if(POINT_IN_REGION(pWin->drawable.pScreen, &pWin->borderSize, x, y, &box))
|
if(POINT_IN_REGION(pWin->drawable.pScreen, &pWin->borderSize, x, y, &box))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -2114,7 +2115,7 @@ Bool
|
||||||
CheckMotion(xEvent *xE, DeviceIntPtr pDev)
|
CheckMotion(xEvent *xE, DeviceIntPtr pDev)
|
||||||
{
|
{
|
||||||
WindowPtr prevSpriteWin;
|
WindowPtr prevSpriteWin;
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
prevSpriteWin = pSprite->win;
|
prevSpriteWin = pSprite->win;
|
||||||
|
|
||||||
|
@ -2219,7 +2220,7 @@ void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff)
|
||||||
{
|
{
|
||||||
if (DevHasCursor(pDev))
|
if (DevHasCursor(pDev))
|
||||||
{
|
{
|
||||||
pSprite = pDev->pSprite;
|
pSprite = pDev->spriteInfo->sprite;
|
||||||
pSprite->hot.x -= xoff;
|
pSprite->hot.x -= xoff;
|
||||||
pSprite->hot.y -= yoff;
|
pSprite->hot.y -= yoff;
|
||||||
|
|
||||||
|
@ -2280,15 +2281,15 @@ InitializeSprite(DeviceIntPtr pDev, WindowPtr pWin)
|
||||||
SpritePtr pSprite;
|
SpritePtr pSprite;
|
||||||
ScreenPtr pScreen;
|
ScreenPtr pScreen;
|
||||||
|
|
||||||
if (!pDev->pSprite)
|
if (!pDev->spriteInfo->sprite)
|
||||||
{
|
{
|
||||||
pDev->pSprite = (SpritePtr)xcalloc(1, sizeof(SpriteRec));
|
pDev->spriteInfo->sprite = (SpritePtr)xcalloc(1, sizeof(SpriteRec));
|
||||||
if (!pDev->pSprite)
|
if (!pDev->spriteInfo->sprite)
|
||||||
FatalError("InitializeSprite: failed to allocate sprite struct");
|
FatalError("InitializeSprite: failed to allocate sprite struct");
|
||||||
}
|
}
|
||||||
|
|
||||||
pSprite = pDev->pSprite;
|
pSprite = pDev->spriteInfo->sprite;
|
||||||
pDev->spriteOwner = TRUE;
|
pDev->spriteInfo->spriteOwner = TRUE;
|
||||||
|
|
||||||
pScreen = (pWin) ? pWin->drawable.pScreen : (ScreenPtr)NULL;
|
pScreen = (pWin) ? pWin->drawable.pScreen : (ScreenPtr)NULL;
|
||||||
pSprite->hot.pScreen = pScreen;
|
pSprite->hot.pScreen = pScreen;
|
||||||
|
@ -2363,7 +2364,7 @@ WindowHasNewCursor(WindowPtr pWin)
|
||||||
_X_EXPORT void
|
_X_EXPORT void
|
||||||
NewCurrentScreen(DeviceIntPtr pDev, ScreenPtr newScreen, int x, int y)
|
NewCurrentScreen(DeviceIntPtr pDev, ScreenPtr newScreen, int x, int y)
|
||||||
{
|
{
|
||||||
SpritePtr pSprite = pDev->pSprite;
|
SpritePtr pSprite = pDev->spriteInfo->sprite;
|
||||||
|
|
||||||
pSprite->hotPhys.x = x;
|
pSprite->hotPhys.x = x;
|
||||||
pSprite->hotPhys.y = y;
|
pSprite->hotPhys.y = y;
|
||||||
|
@ -2423,7 +2424,7 @@ XineramaPointInWindowIsVisible(
|
||||||
yoff = y + panoramiXdataPtr[0].y;
|
yoff = y + panoramiXdataPtr[0].y;
|
||||||
|
|
||||||
for(i = 1; i < PanoramiXNumScreens; i++) {
|
for(i = 1; i < PanoramiXNumScreens; i++) {
|
||||||
pWin = inputInfo.pointer->pSprite->windows[i];
|
pWin = inputInfo.pointer->spriteInfo->sprite->windows[i];
|
||||||
pScreen = pWin->drawable.pScreen;
|
pScreen = pWin->drawable.pScreen;
|
||||||
x = xoff - panoramiXdataPtr[i].x;
|
x = xoff - panoramiXdataPtr[i].x;
|
||||||
y = yoff - panoramiXdataPtr[i].y;
|
y = yoff - panoramiXdataPtr[i].y;
|
||||||
|
@ -2446,7 +2447,7 @@ XineramaWarpPointer(ClientPtr client)
|
||||||
{
|
{
|
||||||
WindowPtr dest = NULL;
|
WindowPtr dest = NULL;
|
||||||
int x, y, rc;
|
int x, y, rc;
|
||||||
SpritePtr pSprite = PickPointer(client)->pSprite;
|
SpritePtr pSprite = PickPointer(client)->spriteInfo->sprite;
|
||||||
|
|
||||||
REQUEST(xWarpPointerReq);
|
REQUEST(xWarpPointerReq);
|
||||||
|
|
||||||
|
@ -2521,7 +2522,7 @@ ProcWarpPointer(ClientPtr client)
|
||||||
WindowPtr dest = NULL;
|
WindowPtr dest = NULL;
|
||||||
int x, y, rc;
|
int x, y, rc;
|
||||||
ScreenPtr newScreen;
|
ScreenPtr newScreen;
|
||||||
SpritePtr pSprite = PickPointer(client)->pSprite;
|
SpritePtr pSprite = PickPointer(client)->spriteInfo->sprite;
|
||||||
|
|
||||||
REQUEST(xWarpPointerReq);
|
REQUEST(xWarpPointerReq);
|
||||||
|
|
||||||
|
@ -2609,7 +2610,7 @@ ProcWarpPointer(ClientPtr client)
|
||||||
static Bool
|
static Bool
|
||||||
BorderSizeNotEmpty(DeviceIntPtr pDev, WindowPtr pWin)
|
BorderSizeNotEmpty(DeviceIntPtr pDev, WindowPtr pWin)
|
||||||
{
|
{
|
||||||
if(REGION_NOTEMPTY(pDev->pSprite->hotPhys.pScreen, &pWin->borderSize))
|
if(REGION_NOTEMPTY(pDev->spriteInfo->sprite->hotPhys.pScreen, &pWin->borderSize))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
#ifdef PANORAMIX
|
#ifdef PANORAMIX
|
||||||
|
@ -2617,8 +2618,8 @@ BorderSizeNotEmpty(DeviceIntPtr pDev, WindowPtr pWin)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for(i = 1; i < PanoramiXNumScreens; i++) {
|
for(i = 1; i < PanoramiXNumScreens; i++) {
|
||||||
if(REGION_NOTEMPTY(pDev->pSprite->screen,
|
if(REGION_NOTEMPTY(pDev->spriteInfo->sprite->screen,
|
||||||
&pDev->pSprite->windows[i]->borderSize))
|
&pDev->spriteInfo->sprite->windows[i]->borderSize))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2817,7 +2818,7 @@ DeliverGrabbedEvent(xEvent *xE, DeviceIntPtr thisDev,
|
||||||
int deliveries = 0;
|
int deliveries = 0;
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
xEvent *dxE;
|
xEvent *dxE;
|
||||||
SpritePtr pSprite = thisDev->pSprite;
|
SpritePtr pSprite = thisDev->spriteInfo->sprite;
|
||||||
|
|
||||||
if (xE->u.u.type & EXTENSION_EVENT_BASE)
|
if (xE->u.u.type & EXTENSION_EVENT_BASE)
|
||||||
grabinfo = &thisDev->deviceGrab;
|
grabinfo = &thisDev->deviceGrab;
|
||||||
|
@ -2988,8 +2989,8 @@ drawable.id:0;
|
||||||
)))
|
)))
|
||||||
#endif
|
#endif
|
||||||
XE_KBPTR.state = (keyc->state | GetPairedPointer(keybd)->button->state);
|
XE_KBPTR.state = (keyc->state | GetPairedPointer(keybd)->button->state);
|
||||||
XE_KBPTR.rootX = keybd->pSprite->hot.x;
|
XE_KBPTR.rootX = keybd->spriteInfo->sprite->hot.x;
|
||||||
XE_KBPTR.rootY = keybd->pSprite->hot.y;
|
XE_KBPTR.rootY = keybd->spriteInfo->sprite->hot.y;
|
||||||
key = xE->u.u.detail;
|
key = xE->u.u.detail;
|
||||||
kptr = &keyc->down[key >> 3];
|
kptr = &keyc->down[key >> 3];
|
||||||
bit = 1 << (key & 7);
|
bit = 1 << (key & 7);
|
||||||
|
@ -3065,7 +3066,7 @@ drawable.id:0;
|
||||||
if (grab)
|
if (grab)
|
||||||
DeliverGrabbedEvent(xE, keybd, deactivateGrab, count);
|
DeliverGrabbedEvent(xE, keybd, deactivateGrab, count);
|
||||||
else
|
else
|
||||||
DeliverFocusedEvent(keybd, xE, keybd->pSprite->win, count);
|
DeliverFocusedEvent(keybd, xE, keybd->spriteInfo->sprite->win, count);
|
||||||
if (deactivateGrab)
|
if (deactivateGrab)
|
||||||
(*grabinfo->DeactivateGrab)(keybd);
|
(*grabinfo->DeactivateGrab)(keybd);
|
||||||
|
|
||||||
|
@ -3117,7 +3118,7 @@ ProcessPointerEvent (xEvent *xE, DeviceIntPtr mouse, int count)
|
||||||
GrabPtr grab = mouse->coreGrab.grab;
|
GrabPtr grab = mouse->coreGrab.grab;
|
||||||
Bool deactivateGrab = FALSE;
|
Bool deactivateGrab = FALSE;
|
||||||
ButtonClassPtr butc = mouse->button;
|
ButtonClassPtr butc = mouse->button;
|
||||||
SpritePtr pSprite = mouse->pSprite;
|
SpritePtr pSprite = mouse->spriteInfo->sprite;
|
||||||
|
|
||||||
#ifdef XKB
|
#ifdef XKB
|
||||||
XkbSrvInfoPtr xkbi= inputInfo.keyboard->key->xkbInfo;
|
XkbSrvInfoPtr xkbi= inputInfo.keyboard->key->xkbInfo;
|
||||||
|
@ -3468,8 +3469,8 @@ EnterLeaveEvent(
|
||||||
event.u.u.type = type;
|
event.u.u.type = type;
|
||||||
event.u.u.detail = detail;
|
event.u.u.detail = detail;
|
||||||
event.u.enterLeave.time = currentTime.milliseconds;
|
event.u.enterLeave.time = currentTime.milliseconds;
|
||||||
event.u.enterLeave.rootX = pDev->pSprite->hot.x;
|
event.u.enterLeave.rootX = pDev->spriteInfo->sprite->hot.x;
|
||||||
event.u.enterLeave.rootY = pDev->pSprite->hot.y;
|
event.u.enterLeave.rootY = pDev->spriteInfo->sprite->hot.y;
|
||||||
/* Counts on the same initial structure of crossing & button events! */
|
/* Counts on the same initial structure of crossing & button events! */
|
||||||
FixUpEventFromWindow(mouse, &event, pWin, None, FALSE);
|
FixUpEventFromWindow(mouse, &event, pWin, None, FALSE);
|
||||||
/* Enter/Leave events always set child */
|
/* Enter/Leave events always set child */
|
||||||
|
@ -3696,7 +3697,7 @@ DoFocusEvents(DeviceIntPtr dev, WindowPtr fromWin, WindowPtr toWin, int mode)
|
||||||
int out, in; /* for holding details for to/from
|
int out, in; /* for holding details for to/from
|
||||||
PointerRoot/None */
|
PointerRoot/None */
|
||||||
int i;
|
int i;
|
||||||
SpritePtr pSprite = dev->pSprite;
|
SpritePtr pSprite = dev->spriteInfo->sprite;
|
||||||
|
|
||||||
if (fromWin == toWin)
|
if (fromWin == toWin)
|
||||||
return;
|
return;
|
||||||
|
@ -4224,7 +4225,7 @@ ProcQueryPointer(ClientPtr client)
|
||||||
xQueryPointerReply rep;
|
xQueryPointerReply rep;
|
||||||
WindowPtr pWin, t;
|
WindowPtr pWin, t;
|
||||||
DeviceIntPtr mouse = PickPointer(client);
|
DeviceIntPtr mouse = PickPointer(client);
|
||||||
SpritePtr pSprite = mouse->pSprite;
|
SpritePtr pSprite = mouse->spriteInfo->sprite;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
REQUEST(xResourceReq);
|
REQUEST(xResourceReq);
|
||||||
|
@ -4343,7 +4344,7 @@ ProcSendEvent(ClientPtr client)
|
||||||
{
|
{
|
||||||
WindowPtr pWin;
|
WindowPtr pWin;
|
||||||
WindowPtr effectiveFocus = NullWindow; /* only set if dest==InputFocus */
|
WindowPtr effectiveFocus = NullWindow; /* only set if dest==InputFocus */
|
||||||
SpritePtr pSprite = PickPointer(client)->pSprite;
|
SpritePtr pSprite = PickPointer(client)->spriteInfo->sprite;
|
||||||
REQUEST(xSendEventReq);
|
REQUEST(xSendEventReq);
|
||||||
|
|
||||||
REQUEST_SIZE_MATCH(xSendEventReq);
|
REQUEST_SIZE_MATCH(xSendEventReq);
|
||||||
|
@ -4771,7 +4772,7 @@ ProcRecolorCursor(ClientPtr client)
|
||||||
int nscr;
|
int nscr;
|
||||||
ScreenPtr pscr;
|
ScreenPtr pscr;
|
||||||
Bool displayed;
|
Bool displayed;
|
||||||
SpritePtr pSprite = PickPointer(client)->pSprite;
|
SpritePtr pSprite = PickPointer(client)->spriteInfo->sprite;
|
||||||
REQUEST(xRecolorCursorReq);
|
REQUEST(xRecolorCursorReq);
|
||||||
|
|
||||||
REQUEST_SIZE_MATCH(xRecolorCursorReq);
|
REQUEST_SIZE_MATCH(xRecolorCursorReq);
|
||||||
|
@ -4914,7 +4915,7 @@ PickPointer(ClientPtr client)
|
||||||
DeviceIntPtr it = inputInfo.devices;
|
DeviceIntPtr it = inputInfo.devices;
|
||||||
while (it)
|
while (it)
|
||||||
{
|
{
|
||||||
if (it != inputInfo.pointer && it->spriteOwner)
|
if (it != inputInfo.pointer && it->spriteInfo->spriteOwner)
|
||||||
{
|
{
|
||||||
client->clientPtr = it;
|
client->clientPtr = it;
|
||||||
break;
|
break;
|
||||||
|
@ -4947,7 +4948,7 @@ PickKeyboard(ClientPtr client)
|
||||||
{
|
{
|
||||||
if (ptr != kbd &&
|
if (ptr != kbd &&
|
||||||
IsKeyboardDevice(kbd) &&
|
IsKeyboardDevice(kbd) &&
|
||||||
ptr->pSprite == kbd->pSprite)
|
ptr->spriteInfo->sprite == kbd->spriteInfo->sprite)
|
||||||
return kbd;
|
return kbd;
|
||||||
kbd = kbd->next;
|
kbd = kbd->next;
|
||||||
}
|
}
|
||||||
|
|
|
@ -505,7 +505,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
if ((type == ButtonPress || type == ButtonRelease) && !pDev->button)
|
if ((type == ButtonPress || type == ButtonRelease) && !pDev->button)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!coreOnly && (pDev->coreEvents || pDev->isMPDev))
|
if (!coreOnly && (pDev->coreEvents))
|
||||||
num_events = 2;
|
num_events = 2;
|
||||||
else
|
else
|
||||||
num_events = 1;
|
num_events = 1;
|
||||||
|
@ -529,10 +529,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
|
|
||||||
ms = GetTimeInMillis();
|
ms = GetTimeInMillis();
|
||||||
|
|
||||||
if (!pDev->coreEvents || pDev->isMPDev)
|
|
||||||
pointer = pDev;
|
pointer = pDev;
|
||||||
else
|
|
||||||
pointer = inputInfo.pointer;
|
|
||||||
|
|
||||||
/* Set x and y based on whether this is absolute or relative, and
|
/* Set x and y based on whether this is absolute or relative, and
|
||||||
* accelerate if we need to. */
|
* accelerate if we need to. */
|
||||||
|
@ -585,11 +582,6 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
|
|
||||||
updateMotionHistory(pDev, ms, first_valuator, num_valuators, valuators);
|
updateMotionHistory(pDev, ms, first_valuator, num_valuators, valuators);
|
||||||
|
|
||||||
if (pDev->coreEvents && !pDev->isMPDev) {
|
|
||||||
/* set the virtual core pointer's coordinates */
|
|
||||||
inputInfo.pointer->valuator->lastx = x;
|
|
||||||
inputInfo.pointer->valuator->lasty = y;
|
|
||||||
}
|
|
||||||
pDev->valuator->lastx = x;
|
pDev->valuator->lastx = x;
|
||||||
pDev->valuator->lasty = y;
|
pDev->valuator->lasty = y;
|
||||||
|
|
||||||
|
@ -623,8 +615,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* MPX devices always send core events */
|
if (coreOnly || pDev->coreEvents) {
|
||||||
if (coreOnly || pDev->coreEvents || pDev->isMPDev) {
|
|
||||||
events->u.u.type = type;
|
events->u.u.type = type;
|
||||||
events->u.keyButtonPointer.time = ms;
|
events->u.keyButtonPointer.time = ms;
|
||||||
events->u.keyButtonPointer.rootX = x;
|
events->u.keyButtonPointer.rootX = x;
|
||||||
|
|
|
@ -171,7 +171,7 @@ xf86ActivateDevice(LocalDevicePtr local)
|
||||||
local->dev = dev;
|
local->dev = dev;
|
||||||
|
|
||||||
dev->coreEvents = local->flags & XI86_ALWAYS_CORE;
|
dev->coreEvents = local->flags & XI86_ALWAYS_CORE;
|
||||||
dev->isMPDev = !(local->flags & XI86_SHARED_POINTER);
|
dev->spriteInfo->spriteOwner = !(local->flags & XI86_SHARED_POINTER);
|
||||||
|
|
||||||
#ifdef XKB
|
#ifdef XKB
|
||||||
if (!IsPointerDevice(dev))
|
if (!IsPointerDevice(dev))
|
||||||
|
|
|
@ -322,6 +322,15 @@ typedef struct _GrabInfoRec {
|
||||||
} sync;
|
} sync;
|
||||||
} GrabInfoRec, *GrabInfoPtr;
|
} GrabInfoRec, *GrabInfoPtr;
|
||||||
|
|
||||||
|
typedef struct _SpriteInfoRec {
|
||||||
|
/* sprite must always point to a valid sprite. For devices sharing the
|
||||||
|
* sprite, let sprite point to a paired spriteOwner's sprite. */
|
||||||
|
SpritePtr sprite; /* sprite information */
|
||||||
|
Bool spriteOwner; /* True if device owns the sprite */
|
||||||
|
DeviceIntPtr paired; /* the real owner of the sprite or
|
||||||
|
NULL if spriteOwner is TRUE*/
|
||||||
|
} SpriteInfoRec, *SpriteInfoPtr;
|
||||||
|
|
||||||
typedef struct _DeviceIntRec {
|
typedef struct _DeviceIntRec {
|
||||||
DeviceRec public;
|
DeviceRec public;
|
||||||
DeviceIntPtr next;
|
DeviceIntPtr next;
|
||||||
|
@ -358,13 +367,7 @@ typedef struct _DeviceIntRec {
|
||||||
DevUnion *devPrivates;
|
DevUnion *devPrivates;
|
||||||
int nPrivates;
|
int nPrivates;
|
||||||
DeviceUnwrapProc unwrapProc;
|
DeviceUnwrapProc unwrapProc;
|
||||||
Bool isMPDev; /* TRUE if multipointer device */
|
SpriteInfoPtr spriteInfo;
|
||||||
/* Each device has a sprite. However, keyboards and shared pointers do
|
|
||||||
not in fact own a sprite but rather have their pointer set to the
|
|
||||||
sprite of another device. pSprite always has to point to a valid
|
|
||||||
sprite. spriteOwner indicates whether it is the device's sprite. */
|
|
||||||
SpritePtr pSprite; /* sprite information */
|
|
||||||
Bool spriteOwner; /* FALSE if shared sprite, see above*/
|
|
||||||
} DeviceIntRec;
|
} DeviceIntRec;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -115,7 +115,7 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
|
||||||
&laste->event[0];
|
&laste->event[0];
|
||||||
|
|
||||||
/* avoid merging events from different devices */
|
/* avoid merging events from different devices */
|
||||||
if (e->u.u.type == MotionNotify && pDev->isMPDev)
|
if (e->u.u.type == MotionNotify)
|
||||||
isMotion = pDev->id;
|
isMotion = pDev->id;
|
||||||
else if (e->u.u.type == MotionNotify)
|
else if (e->u.u.type == MotionNotify)
|
||||||
isMotion = inputInfo.pointer->id;
|
isMotion = inputInfo.pointer->id;
|
||||||
|
@ -235,10 +235,7 @@ mieqProcessInputEvents()
|
||||||
else if (e->event[0].u.u.type == MotionNotify ||
|
else if (e->event[0].u.u.type == MotionNotify ||
|
||||||
e->event[0].u.u.type == ButtonPress ||
|
e->event[0].u.u.type == ButtonPress ||
|
||||||
e->event[0].u.u.type == ButtonRelease) {
|
e->event[0].u.u.type == ButtonRelease) {
|
||||||
if (!e->pDev->isMPDev)
|
|
||||||
SwitchCorePointer(e->pDev);
|
|
||||||
dev = inputInfo.pointer;
|
dev = inputInfo.pointer;
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dev = e->pDev;
|
dev = e->pDev;
|
||||||
|
@ -252,8 +249,7 @@ mieqProcessInputEvents()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the sprite now. Next event may be from different device. */
|
/* Update the sprite now. Next event may be from different device. */
|
||||||
if (e->event[0].u.u.type == MotionNotify &&
|
if (e->event[0].u.u.type == MotionNotify && e->pDev->coreEvents)
|
||||||
(e->pDev->isMPDev || e->pDev->coreEvents))
|
|
||||||
{
|
{
|
||||||
miPointerUpdateSprite(e->pDev);
|
miPointerUpdateSprite(e->pDev);
|
||||||
}
|
}
|
||||||
|
|
|
@ -346,8 +346,7 @@ miPointerUpdateSprite (DeviceIntPtr pDev)
|
||||||
int x, y, devx, devy;
|
int x, y, devx, devy;
|
||||||
miPointerPtr pPointer;
|
miPointerPtr pPointer;
|
||||||
|
|
||||||
if (!pDev || pDev == inputInfo.pointer ||
|
if (!pDev || pDev == inputInfo.pointer || !pDev->coreEvents)
|
||||||
!(pDev->coreEvents || pDev->isMPDev))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pPointer = MIPOINTER(pDev);
|
pPointer = MIPOINTER(pDev);
|
||||||
|
@ -481,8 +480,7 @@ miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y, unsigned long time)
|
||||||
if (!pScreen)
|
if (!pScreen)
|
||||||
return; /* called before ready */
|
return; /* called before ready */
|
||||||
|
|
||||||
if (!pDev ||
|
if (!pDev || !(pDev->coreEvents || pDev == inputInfo.pointer))
|
||||||
!(pDev->coreEvents || pDev == inputInfo.pointer || pDev->isMPDev))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (*x < 0 || *x >= pScreen->width || *y < 0 || *y >= pScreen->height)
|
if (*x < 0 || *x >= pScreen->width || *y < 0 || *y >= pScreen->height)
|
||||||
|
@ -574,7 +572,7 @@ miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
|
||||||
SetupScreen(pScreen);
|
SetupScreen(pScreen);
|
||||||
|
|
||||||
|
|
||||||
if (pDev && (pDev->coreEvents || pDev == inputInfo.pointer || pDev->isMPDev)
|
if (pDev && (pDev->coreEvents || pDev == inputInfo.pointer)
|
||||||
&& !pScreenPriv->waitForUpdate && pScreen == pPointer->pSpriteScreen)
|
&& !pScreenPriv->waitForUpdate && pScreen == pPointer->pSpriteScreen)
|
||||||
{
|
{
|
||||||
pPointer->devx = x;
|
pPointer->devx = x;
|
||||||
|
|
Loading…
Reference in New Issue