dix: moved sprite from static to be pointer of type SpritePtr
added SpriteRecs for MPX devices changed sprite dependency and added MPX functionality to parts of events.c (ConfineToShape, PostNewCursor, XineramaCheckMotion, CheckMotion, XineramaChangeToCursor, ChangeToCursor, CheckPhysLimits, PointerConfinedToScreen) added DeviceIntRec param to GetSpritePosition(). This required some minor changes in ddx, xtest, xkb and xfixes. mi: changed miPointer to pointer instead of static struct.
This commit is contained in:
parent
fd8b9a6eae
commit
9db851c22d
24
Changelog
24
Changelog
|
@ -34,6 +34,30 @@ Files:
|
||||||
|
|
||||||
TAG: MPX_BEFORE_DIX_API_BREAK
|
TAG: MPX_BEFORE_DIX_API_BREAK
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
dix: moved sprite from static to be pointer of type SpritePtr
|
||||||
|
added SpriteRecs for MPX devices
|
||||||
|
changed sprite dependency and added MPX functionality to parts
|
||||||
|
of events.c (ConfineToShape, PostNewCursor, XineramaCheckMotion,
|
||||||
|
CheckMotion, XineramaChangeToCursor, ChangeToCursor, CheckPhysLimits,
|
||||||
|
PointerConfinedToScreen)
|
||||||
|
added DeviceIntRec param to GetSpritePosition(). This required some
|
||||||
|
minor changes in ddx, xtest, xkb and xfixes.
|
||||||
|
|
||||||
|
mi: changed miPointer to pointer instead of static struct.
|
||||||
|
|
||||||
|
Files:
|
||||||
|
dix/events.c
|
||||||
|
dix/exevents.c
|
||||||
|
Xext/xtest.c
|
||||||
|
ddx/ddxFakeBtn.c
|
||||||
|
ddx/ddxFakeMtn.c
|
||||||
|
ddx/ddxDevBtn.c
|
||||||
|
xkb/xkbActions.c
|
||||||
|
xfixes/cursor.c
|
||||||
|
mi/mieq.c
|
||||||
|
|
||||||
== 20.11.06 ==
|
== 20.11.06 ==
|
||||||
|
|
||||||
mi: moved core pointer information from miSpriteScreenRec into a
|
mi: moved core pointer information from miSpriteScreenRec into a
|
||||||
|
|
|
@ -379,7 +379,7 @@ ProcXTestFakeInput(client)
|
||||||
if (ev->u.u.detail == xTrue)
|
if (ev->u.u.detail == xTrue)
|
||||||
{
|
{
|
||||||
int x, y;
|
int x, y;
|
||||||
GetSpritePosition(&x, &y);
|
GetSpritePosition(inputInfo.pointer, &x, &y);
|
||||||
ev->u.keyButtonPointer.rootX += x;
|
ev->u.keyButtonPointer.rootX += x;
|
||||||
ev->u.keyButtonPointer.rootY += y;
|
ev->u.keyButtonPointer.rootY += y;
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,13 +119,17 @@ ProcessOtherEvent(xEventPtr xE, register DeviceIntPtr other, int count)
|
||||||
deviceValuator *xV = (deviceValuator *) xE;
|
deviceValuator *xV = (deviceValuator *) xE;
|
||||||
|
|
||||||
if (xE->u.u.type != DeviceValuator) {
|
if (xE->u.u.type != DeviceValuator) {
|
||||||
GetSpritePosition(&rootX, &rootY);
|
GetSpritePosition(other, &rootX, &rootY);
|
||||||
xE->u.keyButtonPointer.rootX = rootX;
|
xE->u.keyButtonPointer.rootX = rootX;
|
||||||
xE->u.keyButtonPointer.rootY = rootY;
|
xE->u.keyButtonPointer.rootY = rootY;
|
||||||
key = xE->u.u.detail;
|
key = xE->u.u.detail;
|
||||||
NoticeEventTime(xE);
|
NoticeEventTime(xE);
|
||||||
xE->u.keyButtonPointer.state = inputInfo.keyboard->key->state |
|
xE->u.keyButtonPointer.state = inputInfo.keyboard->key->state |
|
||||||
|
#ifdef MPX
|
||||||
|
other->button->state;
|
||||||
|
#else
|
||||||
inputInfo.pointer->button->state;
|
inputInfo.pointer->button->state;
|
||||||
|
#endif
|
||||||
bit = 1 << (key & 7);
|
bit = 1 << (key & 7);
|
||||||
}
|
}
|
||||||
if (DeviceEventCallback) {
|
if (DeviceEventCallback) {
|
||||||
|
|
904
dix/events.c
904
dix/events.c
File diff suppressed because it is too large
Load Diff
|
@ -59,6 +59,8 @@ SOFTWARE.
|
||||||
#define ARGB_CURSOR
|
#define ARGB_CURSOR
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
struct _DeviceIntRec;
|
||||||
|
|
||||||
typedef struct _Cursor *CursorPtr;
|
typedef struct _Cursor *CursorPtr;
|
||||||
typedef struct _CursorMetric *CursorMetricPtr;
|
typedef struct _CursorMetric *CursorMetricPtr;
|
||||||
|
|
||||||
|
@ -133,9 +135,10 @@ extern void NewCurrentScreen(
|
||||||
int /*x*/,
|
int /*x*/,
|
||||||
int /*y*/);
|
int /*y*/);
|
||||||
|
|
||||||
extern Bool PointerConfinedToScreen(void);
|
extern Bool PointerConfinedToScreen(struct _DeviceIntRec* /* pDev */);
|
||||||
|
|
||||||
extern void GetSpritePosition(
|
extern void GetSpritePosition(
|
||||||
|
struct _DeviceIntRec* /* pDev */,
|
||||||
int * /*px*/,
|
int * /*px*/,
|
||||||
int * /*py*/);
|
int * /*py*/);
|
||||||
|
|
||||||
|
|
14
mi/mieq.c
14
mi/mieq.c
|
@ -239,11 +239,9 @@ mieqProcessInputEvents()
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
/* MPX devices send both core and Xi events. Depending on what
|
/* MPX devices send both core and Xi events.
|
||||||
* event we have, dev is set to either the core pointer or the
|
* Use dev to get the correct processing function but supply
|
||||||
* device. This gives us the right processing function but we need
|
* e->pDev to pass the correct device
|
||||||
* to pass the right device in too.
|
|
||||||
* Any device that is not a MP device is processed as usual.
|
|
||||||
*/
|
*/
|
||||||
if (e->pDev->isMPDev)
|
if (e->pDev->isMPDev)
|
||||||
dev->public.processInputProc(e->event, e->pDev, e->nevents);
|
dev->public.processInputProc(e->event, e->pDev, e->nevents);
|
||||||
|
@ -252,11 +250,7 @@ mieqProcessInputEvents()
|
||||||
dev->public.processInputProc(e->event, dev, e->nevents);
|
dev->public.processInputProc(e->event, dev, e->nevents);
|
||||||
}
|
}
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
/*
|
/* Update the sprite now. Next event may be from different device. */
|
||||||
* This is inefficient as we update the sprite for each event rather
|
|
||||||
* than at the end of the event queue. But we don't know if the
|
|
||||||
* next event is from the same device, so it's better to do it here.
|
|
||||||
*/
|
|
||||||
if (e->event[0].u.u.type == MotionNotify &&
|
if (e->event[0].u.u.type == MotionNotify &&
|
||||||
(e->pDev->isMPDev || e->pDev->coreEvents))
|
(e->pDev->isMPDev || e->pDev->coreEvents))
|
||||||
{
|
{
|
||||||
|
|
192
mi/mipointer.c
192
mi/mipointer.c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* mipointer.c
|
* miPointer->c
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ static unsigned long miPointerGeneration = 0;
|
||||||
* until more than one pointer device exists.
|
* until more than one pointer device exists.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static miPointerRec miPointer;
|
static miPointerPtr miPointer;
|
||||||
|
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
/* Multipointers */
|
/* Multipointers */
|
||||||
|
@ -144,19 +144,27 @@ miPointerInitialize (pScreen, spriteFuncs, screenFuncs, waitForUpdate)
|
||||||
/*
|
/*
|
||||||
* set up the pointer object
|
* set up the pointer object
|
||||||
*/
|
*/
|
||||||
miPointer.pScreen = NULL;
|
miPointer = (miPointerPtr)xalloc(sizeof(miPointerRec));
|
||||||
miPointer.pSpriteScreen = NULL;
|
if (!miPointer)
|
||||||
miPointer.pCursor = NULL;
|
{
|
||||||
miPointer.pSpriteCursor = NULL;
|
xfree(pScreenPriv);
|
||||||
miPointer.limits.x1 = 0;
|
return FALSE;
|
||||||
miPointer.limits.x2 = 32767;
|
}
|
||||||
miPointer.limits.y1 = 0;
|
miPointer->pScreen = NULL;
|
||||||
miPointer.limits.y2 = 32767;
|
miPointer->pSpriteScreen = NULL;
|
||||||
miPointer.confined = FALSE;
|
miPointer->pCursor = NULL;
|
||||||
miPointer.x = 0;
|
miPointer->pSpriteCursor = NULL;
|
||||||
miPointer.y = 0;
|
miPointer->limits.x1 = 0;
|
||||||
|
miPointer->limits.x2 = 32767;
|
||||||
|
miPointer->limits.y1 = 0;
|
||||||
|
miPointer->limits.y2 = 32767;
|
||||||
|
miPointer->confined = FALSE;
|
||||||
|
miPointer->x = 0;
|
||||||
|
miPointer->y = 0;
|
||||||
|
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
|
xfree(miPointer);
|
||||||
|
miPointer = &miMPPointers[1];
|
||||||
/*
|
/*
|
||||||
* Set up pointer objects for multipointer devices.
|
* Set up pointer objects for multipointer devices.
|
||||||
*/
|
*/
|
||||||
|
@ -188,10 +196,10 @@ miPointerCloseScreen (index, pScreen)
|
||||||
int mpPointerIdx = 0;
|
int mpPointerIdx = 0;
|
||||||
SetupScreen(pScreen);
|
SetupScreen(pScreen);
|
||||||
|
|
||||||
if (pScreen == miPointer.pScreen)
|
if (pScreen == miPointer->pScreen)
|
||||||
miPointer.pScreen = 0;
|
miPointer->pScreen = 0;
|
||||||
if (pScreen == miPointer.pSpriteScreen)
|
if (pScreen == miPointer->pSpriteScreen)
|
||||||
miPointer.pSpriteScreen = 0;
|
miPointer->pSpriteScreen = 0;
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
while(mpPointerIdx < MAX_DEVICES)
|
while(mpPointerIdx < MAX_DEVICES)
|
||||||
{
|
{
|
||||||
|
@ -249,8 +257,8 @@ miPointerDisplayCursor (pScreen, pCursor)
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
miPointer.pCursor = pCursor;
|
miPointer->pCursor = pCursor;
|
||||||
miPointer.pScreen = pScreen;
|
miPointer->pScreen = pScreen;
|
||||||
miPointerUpdateSprite(inputInfo.pointer);
|
miPointerUpdateSprite(inputInfo.pointer);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -261,14 +269,13 @@ miPointerConstrainCursor (pDev, pScreen, pBox)
|
||||||
ScreenPtr pScreen;
|
ScreenPtr pScreen;
|
||||||
BoxPtr pBox;
|
BoxPtr pBox;
|
||||||
{
|
{
|
||||||
|
miPointerPtr pPointer = miPointer;
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
if (IsMPDev(pDev))
|
if (IsMPDev(pDev))
|
||||||
{
|
pPointer = &miMPPointers[pDev->id];
|
||||||
miMPPointers[pDev->id].limits = *pBox;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
miPointer.limits = *pBox;
|
pPointer->limits = *pBox;
|
||||||
miPointer.confined = PointerConfinedToScreen();
|
pPointer->confined = PointerConfinedToScreen(pDev);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
|
@ -320,7 +327,7 @@ miPointerWarpCursor (pScreen, x, y)
|
||||||
|
|
||||||
SetupScreen (pScreen);
|
SetupScreen (pScreen);
|
||||||
|
|
||||||
if (miPointer.pScreen != pScreen)
|
if (miPointer->pScreen != pScreen)
|
||||||
(*pScreenPriv->screenFuncs->NewEventScreen) (pScreen, TRUE);
|
(*pScreenPriv->screenFuncs->NewEventScreen) (pScreen, TRUE);
|
||||||
|
|
||||||
if (GenerateEvent)
|
if (GenerateEvent)
|
||||||
|
@ -331,16 +338,16 @@ miPointerWarpCursor (pScreen, x, y)
|
||||||
{
|
{
|
||||||
/* everything from miPointerMove except the event and history */
|
/* everything from miPointerMove except the event and history */
|
||||||
|
|
||||||
if (!pScreenPriv->waitForUpdate && pScreen == miPointer.pSpriteScreen)
|
if (!pScreenPriv->waitForUpdate && pScreen == miPointer->pSpriteScreen)
|
||||||
{
|
{
|
||||||
miPointer.devx = x;
|
miPointer->devx = x;
|
||||||
miPointer.devy = y;
|
miPointer->devy = y;
|
||||||
if(!miPointer.pCursor->bits->emptyMask)
|
if(!miPointer->pCursor->bits->emptyMask)
|
||||||
(*pScreenPriv->spriteFuncs->MoveCursor) (pDev, pScreen, x, y);
|
(*pScreenPriv->spriteFuncs->MoveCursor) (pDev, pScreen, x, y);
|
||||||
}
|
}
|
||||||
miPointer.x = x;
|
miPointer->x = x;
|
||||||
miPointer.y = y;
|
miPointer->y = y;
|
||||||
miPointer.pScreen = pScreen;
|
miPointer->pScreen = pScreen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -367,7 +374,7 @@ miPointerUpdateSprite (DeviceIntPtr pDev)
|
||||||
miPointerScreenPtr pScreenPriv;
|
miPointerScreenPtr pScreenPriv;
|
||||||
CursorPtr pCursor;
|
CursorPtr pCursor;
|
||||||
int x, y, devx, devy;
|
int x, y, devx, devy;
|
||||||
miPointerPtr pointer;
|
miPointerPtr pPointer;
|
||||||
|
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
if (!pDev ||
|
if (!pDev ||
|
||||||
|
@ -379,66 +386,66 @@ miPointerUpdateSprite (DeviceIntPtr pDev)
|
||||||
|
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
if (IsMPDev(pDev))
|
if (IsMPDev(pDev))
|
||||||
pointer = &miMPPointers[pDev->id];
|
pPointer = &miMPPointers[pDev->id];
|
||||||
else
|
else
|
||||||
pointer = &miPointer;
|
pPointer = miPointer;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pScreen = pointer->pScreen;
|
pScreen = pPointer->pScreen;
|
||||||
if (!pScreen)
|
if (!pScreen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
x = pointer->x;
|
x = pPointer->x;
|
||||||
y = pointer->y;
|
y = pPointer->y;
|
||||||
devx = pointer->devx;
|
devx = pPointer->devx;
|
||||||
devy = pointer->devy;
|
devy = pPointer->devy;
|
||||||
|
|
||||||
pScreenPriv = GetScreenPrivate (pScreen);
|
pScreenPriv = GetScreenPrivate (pScreen);
|
||||||
/*
|
/*
|
||||||
* if the cursor has switched screens, disable the sprite
|
* if the cursor has switched screens, disable the sprite
|
||||||
* on the old screen
|
* on the old screen
|
||||||
*/
|
*/
|
||||||
if (pScreen != pointer->pSpriteScreen)
|
if (pScreen != pPointer->pSpriteScreen)
|
||||||
{
|
{
|
||||||
if (pointer->pSpriteScreen)
|
if (pPointer->pSpriteScreen)
|
||||||
{
|
{
|
||||||
miPointerScreenPtr pOldPriv;
|
miPointerScreenPtr pOldPriv;
|
||||||
|
|
||||||
pOldPriv = GetScreenPrivate (pointer->pSpriteScreen);
|
pOldPriv = GetScreenPrivate (pPointer->pSpriteScreen);
|
||||||
if (pointer->pCursor)
|
if (pPointer->pCursor)
|
||||||
{
|
{
|
||||||
(*pOldPriv->spriteFuncs->SetCursor)
|
(*pOldPriv->spriteFuncs->SetCursor)
|
||||||
(pDev, pointer->pSpriteScreen, NullCursor, 0, 0);
|
(pDev, pPointer->pSpriteScreen, NullCursor, 0, 0);
|
||||||
}
|
}
|
||||||
(*pOldPriv->screenFuncs->CrossScreen) (pointer->pSpriteScreen, FALSE);
|
(*pOldPriv->screenFuncs->CrossScreen) (pPointer->pSpriteScreen, FALSE);
|
||||||
}
|
}
|
||||||
(*pScreenPriv->screenFuncs->CrossScreen) (pScreen, TRUE);
|
(*pScreenPriv->screenFuncs->CrossScreen) (pScreen, TRUE);
|
||||||
(*pScreenPriv->spriteFuncs->SetCursor)
|
(*pScreenPriv->spriteFuncs->SetCursor)
|
||||||
(pDev, pScreen, pointer->pCursor, x, y);
|
(pDev, pScreen, pPointer->pCursor, x, y);
|
||||||
pointer->devx = x;
|
pPointer->devx = x;
|
||||||
pointer->devy = y;
|
pPointer->devy = y;
|
||||||
pointer->pSpriteCursor = pointer->pCursor;
|
pPointer->pSpriteCursor = pPointer->pCursor;
|
||||||
pointer->pSpriteScreen = pScreen;
|
pPointer->pSpriteScreen = pScreen;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* if the cursor has changed, display the new one
|
* if the cursor has changed, display the new one
|
||||||
*/
|
*/
|
||||||
else if (pointer->pCursor != pointer->pSpriteCursor)
|
else if (pPointer->pCursor != pPointer->pSpriteCursor)
|
||||||
{
|
{
|
||||||
pCursor = pointer->pCursor;
|
pCursor = pPointer->pCursor;
|
||||||
if (pCursor->bits->emptyMask && !pScreenPriv->showTransparent)
|
if (pCursor->bits->emptyMask && !pScreenPriv->showTransparent)
|
||||||
pCursor = NullCursor;
|
pCursor = NullCursor;
|
||||||
(*pScreenPriv->spriteFuncs->SetCursor) (pDev, pScreen, pCursor, x, y);
|
(*pScreenPriv->spriteFuncs->SetCursor) (pDev, pScreen, pCursor, x, y);
|
||||||
|
|
||||||
pointer->devx = x;
|
pPointer->devx = x;
|
||||||
pointer->devy = y;
|
pPointer->devy = y;
|
||||||
pointer->pSpriteCursor = pointer->pCursor;
|
pPointer->pSpriteCursor = pPointer->pCursor;
|
||||||
}
|
}
|
||||||
else if (x != devx || y != devy)
|
else if (x != devx || y != devy)
|
||||||
{
|
{
|
||||||
pointer->devx = x;
|
pPointer->devx = x;
|
||||||
pointer->devy = y;
|
pPointer->devy = y;
|
||||||
if(!pointer->pCursor->bits->emptyMask)
|
if(!pPointer->pCursor->bits->emptyMask)
|
||||||
(*pScreenPriv->spriteFuncs->MoveCursor) (pDev, pScreen, x, y);
|
(*pScreenPriv->spriteFuncs->MoveCursor) (pDev, pScreen, x, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -451,7 +458,7 @@ miPointerUpdateSprite (DeviceIntPtr pDev)
|
||||||
void
|
void
|
||||||
miPointerDeltaCursor (int dx, int dy, unsigned long time)
|
miPointerDeltaCursor (int dx, int dy, unsigned long time)
|
||||||
{
|
{
|
||||||
int x = miPointer.x + dx, y = miPointer.y + dy;
|
int x = miPointer->x + dx, y = miPointer->y + dy;
|
||||||
|
|
||||||
miPointerSetPosition(inputInfo.pointer, &x, &y, time);
|
miPointerSetPosition(inputInfo.pointer, &x, &y, time);
|
||||||
}
|
}
|
||||||
|
@ -480,8 +487,8 @@ miPointerSetScreen(DeviceIntPtr pDev, int screen_no, int x, int y)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
miPointer.limits.x2 = pScreen->width;
|
miPointer->limits.x2 = pScreen->width;
|
||||||
miPointer.limits.y2 = pScreen->height;
|
miPointer->limits.y2 = pScreen->height;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -498,7 +505,7 @@ miPointerGetScreen(DeviceIntPtr pDev)
|
||||||
if (IsMPDev(pDev))
|
if (IsMPDev(pDev))
|
||||||
return miMPPointers[pDev->id].pScreen;
|
return miMPPointers[pDev->id].pScreen;
|
||||||
#endif
|
#endif
|
||||||
return miPointer.pScreen;
|
return miPointer->pScreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Move the pointer to x, y on the current screen, update the sprite, and
|
/* Move the pointer to x, y on the current screen, update the sprite, and
|
||||||
|
@ -517,15 +524,15 @@ miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y, unsigned long time)
|
||||||
ScreenPtr pScreen;
|
ScreenPtr pScreen;
|
||||||
ScreenPtr newScreen;
|
ScreenPtr newScreen;
|
||||||
|
|
||||||
miPointerPtr pointer;
|
miPointerPtr pPointer;
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
if (IsMPDev(pDev))
|
if (IsMPDev(pDev))
|
||||||
pointer = &(miMPPointers[pDev->id]);
|
pPointer = &(miMPPointers[pDev->id]);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
pointer = &miPointer;
|
pPointer = miPointer;
|
||||||
|
|
||||||
pScreen = pointer->pScreen;
|
pScreen = pPointer->pScreen;
|
||||||
if (!pScreen)
|
if (!pScreen)
|
||||||
return; /* called before ready */
|
return; /* called before ready */
|
||||||
|
|
||||||
|
@ -540,7 +547,7 @@ miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y, unsigned long time)
|
||||||
if (*x < 0 || *x >= pScreen->width || *y < 0 || *y >= pScreen->height)
|
if (*x < 0 || *x >= pScreen->width || *y < 0 || *y >= pScreen->height)
|
||||||
{
|
{
|
||||||
pScreenPriv = GetScreenPrivate (pScreen);
|
pScreenPriv = GetScreenPrivate (pScreen);
|
||||||
if (!pointer->confined)
|
if (!pPointer->confined)
|
||||||
{
|
{
|
||||||
newScreen = pScreen;
|
newScreen = pScreen;
|
||||||
(*pScreenPriv->screenFuncs->CursorOffScreen) (&newScreen, x, y);
|
(*pScreenPriv->screenFuncs->CursorOffScreen) (&newScreen, x, y);
|
||||||
|
@ -550,23 +557,24 @@ miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y, unsigned long time)
|
||||||
(*pScreenPriv->screenFuncs->NewEventScreen) (pScreen, FALSE);
|
(*pScreenPriv->screenFuncs->NewEventScreen) (pScreen, FALSE);
|
||||||
pScreenPriv = GetScreenPrivate (pScreen);
|
pScreenPriv = GetScreenPrivate (pScreen);
|
||||||
/* Smash the confine to the new screen */
|
/* Smash the confine to the new screen */
|
||||||
pointer->limits.x2 = pScreen->width;
|
pPointer->limits.x2 = pScreen->width;
|
||||||
pointer->limits.y2 = pScreen->height;
|
pPointer->limits.y2 = pScreen->height;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Constrain the sprite to the current limits. */
|
/* Constrain the sprite to the current limits. */
|
||||||
if (*x < pointer->limits.x1)
|
if (*x < pPointer->limits.x1)
|
||||||
*x = pointer->limits.x1;
|
*x = pPointer->limits.x1;
|
||||||
if (*x >= pointer->limits.x2)
|
if (*x >= pPointer->limits.x2)
|
||||||
*x = pointer->limits.x2 - 1;
|
*x = pPointer->limits.x2 - 1;
|
||||||
if (*y < pointer->limits.y1)
|
if (*y < pPointer->limits.y1)
|
||||||
*y = pointer->limits.y1;
|
*y = pPointer->limits.y1;
|
||||||
if (*y >= pointer->limits.y2)
|
if (*y >= pPointer->limits.y2)
|
||||||
*y = pointer->limits.y2 - 1;
|
*y = pPointer->limits.y2 - 1;
|
||||||
|
|
||||||
if (pointer->x == *x && pointer->y == *y && pointer->pScreen == pScreen)
|
if (pPointer->x == *x && pPointer->y == *y &&
|
||||||
return;
|
pPointer->pScreen == pScreen)
|
||||||
|
return;
|
||||||
|
|
||||||
miPointerMoved(pDev, pScreen, *x, *y, time);
|
miPointerMoved(pDev, pScreen, *x, *y, time);
|
||||||
}
|
}
|
||||||
|
@ -589,8 +597,8 @@ miPointerGetPosition(DeviceIntPtr pDev, int *x, int *y)
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
*x = miPointer.x;
|
*x = miPointer->x;
|
||||||
*y = miPointer.y;
|
*y = miPointer->y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -605,30 +613,30 @@ void
|
||||||
miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
|
miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
|
||||||
unsigned long time)
|
unsigned long time)
|
||||||
{
|
{
|
||||||
miPointerPtr pointer;
|
miPointerPtr pPointer;
|
||||||
SetupScreen(pScreen);
|
SetupScreen(pScreen);
|
||||||
|
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
if (IsMPDev(pDev))
|
if (IsMPDev(pDev))
|
||||||
pointer = &miMPPointers[pDev->id];
|
pPointer = &miMPPointers[pDev->id];
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
pointer = &miPointer;
|
pPointer = miPointer;
|
||||||
|
|
||||||
if (pDev && (pDev->coreEvents || pDev == inputInfo.pointer
|
if (pDev && (pDev->coreEvents || pDev == inputInfo.pointer
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
|| pDev->isMPDev
|
|| pDev->isMPDev
|
||||||
#endif
|
#endif
|
||||||
) &&
|
) &&
|
||||||
!pScreenPriv->waitForUpdate && pScreen == miPointer.pSpriteScreen)
|
!pScreenPriv->waitForUpdate && pScreen == pPointer->pSpriteScreen)
|
||||||
{
|
{
|
||||||
pointer->devx = x;
|
pPointer->devx = x;
|
||||||
pointer->devy = y;
|
pPointer->devy = y;
|
||||||
if(!pointer->pCursor->bits->emptyMask)
|
if(!pPointer->pCursor->bits->emptyMask)
|
||||||
(*pScreenPriv->spriteFuncs->MoveCursor) (pDev, pScreen, x, y);
|
(*pScreenPriv->spriteFuncs->MoveCursor) (pDev, pScreen, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
pointer->x = x;
|
pPointer->x = x;
|
||||||
pointer->y = y;
|
pPointer->y = y;
|
||||||
pointer->pScreen = pScreen;
|
pPointer->pScreen = pScreen;
|
||||||
}
|
}
|
||||||
|
|
|
@ -355,7 +355,7 @@ ProcXFixesGetCursorImage (ClientPtr client)
|
||||||
pCursor = CursorCurrent;
|
pCursor = CursorCurrent;
|
||||||
if (!pCursor)
|
if (!pCursor)
|
||||||
return BadCursor;
|
return BadCursor;
|
||||||
GetSpritePosition (&x, &y);
|
GetSpritePosition (inputInfo.pointer, &x, &y);
|
||||||
width = pCursor->bits->width;
|
width = pCursor->bits->width;
|
||||||
height = pCursor->bits->height;
|
height = pCursor->bits->height;
|
||||||
npixels = width * height;
|
npixels = width * height;
|
||||||
|
@ -503,7 +503,7 @@ ProcXFixesGetCursorImageAndName (ClientPtr client)
|
||||||
pCursor = CursorCurrent;
|
pCursor = CursorCurrent;
|
||||||
if (!pCursor)
|
if (!pCursor)
|
||||||
return BadCursor;
|
return BadCursor;
|
||||||
GetSpritePosition (&x, &y);
|
GetSpritePosition (inputInfo.pointer, &x, &y);
|
||||||
width = pCursor->bits->width;
|
width = pCursor->bits->width;
|
||||||
height = pCursor->bits->height;
|
height = pCursor->bits->height;
|
||||||
npixels = width * height;
|
npixels = width * height;
|
||||||
|
|
|
@ -60,7 +60,7 @@ int nAxes, i, count;
|
||||||
if (nAxes > 6)
|
if (nAxes > 6)
|
||||||
nAxes = 6;
|
nAxes = 6;
|
||||||
|
|
||||||
GetSpritePosition(&x,&y);
|
GetSpritePosition(dev, &x,&y);
|
||||||
btn= (deviceKeyButtonPointer *) &events[0];
|
btn= (deviceKeyButtonPointer *) &events[0];
|
||||||
val= (deviceValuator *) &events[1];
|
val= (deviceValuator *) &events[1];
|
||||||
if (press) btn->type= DeviceButtonPress;
|
if (press) btn->type= DeviceButtonPress;
|
||||||
|
|
|
@ -49,7 +49,7 @@ DevicePtr ptr;
|
||||||
|
|
||||||
if ((ptr = LookupPointerDevice())==NULL)
|
if ((ptr = LookupPointerDevice())==NULL)
|
||||||
return;
|
return;
|
||||||
GetSpritePosition(&x,&y);
|
GetSpritePosition(inputInfo.pointer, &x,&y);
|
||||||
ev.u.u.type = event;
|
ev.u.u.type = event;
|
||||||
ev.u.u.detail = button;
|
ev.u.u.detail = button;
|
||||||
ev.u.keyButtonPointer.time = GetTimeInMillis();
|
ev.u.keyButtonPointer.time = GetTimeInMillis();
|
||||||
|
|
|
@ -53,7 +53,7 @@ XkbDDXFakePointerMotion(unsigned flags,int x,int y)
|
||||||
int oldX,oldY;
|
int oldX,oldY;
|
||||||
ScreenPtr pScreen, oldScreen;
|
ScreenPtr pScreen, oldScreen;
|
||||||
|
|
||||||
GetSpritePosition(&oldX, &oldY);
|
GetSpritePosition(inputInfo.pointer, &oldX, &oldY);
|
||||||
pScreen = oldScreen = GetSpriteWindow()->drawable.pScreen;
|
pScreen = oldScreen = GetSpriteWindow()->drawable.pScreen;
|
||||||
|
|
||||||
#ifdef PANORAMIX
|
#ifdef PANORAMIX
|
||||||
|
|
|
@ -875,7 +875,7 @@ xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(xkbi->device);
|
||||||
if ((filter->keycode!=0)&&(filter->keycode!=keycode))
|
if ((filter->keycode!=0)&&(filter->keycode!=keycode))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
GetSpritePosition(&x,&y);
|
GetSpritePosition(inputInfo.pointer, &x,&y);
|
||||||
ev.u.keyButtonPointer.time = GetTimeInMillis();
|
ev.u.keyButtonPointer.time = GetTimeInMillis();
|
||||||
ev.u.keyButtonPointer.rootX = x;
|
ev.u.keyButtonPointer.rootX = x;
|
||||||
ev.u.keyButtonPointer.rootY = y;
|
ev.u.keyButtonPointer.rootY = y;
|
||||||
|
|
Loading…
Reference in New Issue