Convert to using int32_t fixed point values on the wire.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2009-04-19 22:12:11 +10:00
parent 129ac9a914
commit 54716fd3db
6 changed files with 32 additions and 36 deletions

View File

@ -1220,8 +1220,8 @@ DeviceFocusEvent(DeviceIntPtr dev, int type, int mode, int detail,
xi2event->deviceid = dev->id;
xi2event->sourceid = 0; /*XXX */
xi2event->mode = mode;
xi2event->root_x.integral = mouse->spriteInfo->sprite->hot.x;
xi2event->root_y.integral = mouse->spriteInfo->sprite->hot.y;
xi2event->root_x = FP1616(mouse->spriteInfo->sprite->hot.x, 0);
xi2event->root_y = FP1616(mouse->spriteInfo->sprite->hot.y, 0);
for (i = 0; mouse && mouse->button && i < mouse->button->numButtons; i++)
if (BitIsOn(mouse->button->down, i))

View File

@ -628,14 +628,10 @@ SDeviceLeaveNotifyEvent (xXILeaveEvent *from, xXILeaveEvent *to)
swapl(&to->root, n);
swapl(&to->event, n);
swapl(&to->child, n);
swaps(&to->root_x.integral, n);
swaps(&to->root_x.frac, n);
swaps(&to->root_y.integral, n);
swaps(&to->root_y.frac, n);
swaps(&to->event_x.integral, n);
swaps(&to->event_x.frac, n);
swaps(&to->event_y.integral, n);
swaps(&to->event_y.frac, n);
swapl(&to->root_x, n);
swapl(&to->root_y, n);
swapl(&to->event_x, n);
swapl(&to->event_y, n);
swaps(&to->sourceid, n);
swaps(&to->buttons_len, n);
swapl(&to->mods.base_mods, n);
@ -721,14 +717,10 @@ static void SDeviceEvent(xXIDeviceEvent *from, xXIDeviceEvent *to)
swapl(&to->root, n);
swapl(&to->event, n);
swapl(&to->child, n);
swapl(&to->root_x.integral, n);
swapl(&to->root_x.frac, n);
swapl(&to->root_y.integral, n);
swapl(&to->root_y.frac, n);
swapl(&to->event_x.integral, n);
swapl(&to->event_x.frac, n);
swapl(&to->event_y.integral, n);
swapl(&to->event_y.frac, n);
swapl(&to->root_x, n);
swapl(&to->root_y, n);
swapl(&to->event_x, n);
swapl(&to->event_y, n);
swaps(&to->buttons_len, n);
swaps(&to->valuators_len, n);
swaps(&to->sourceid, n);

View File

@ -42,6 +42,7 @@
#include "extnsionst.h"
#include "exevents.h"
#include "exglobals.h"
#include "eventconvert.h"
#include "xkbsrv.h"
#ifdef PANORAMIX
@ -110,16 +111,16 @@ ProcXIQueryDevicePointer(ClientPtr client)
if (kbd && kbd->key)
rep.mask |= XkbStateFieldFromRec(&kbd->key->xkbInfo->state);
rep.root = (GetCurrentRootWindow(pDev))->drawable.id;
rep.root_x.integral = pSprite->hot.x;
rep.root_y.integral = pSprite->hot.y;
rep.root_x = FP1616(pSprite->hot.x, 0);
rep.root_y = FP1616(pSprite->hot.y, 0);
rep.child = None;
rep.deviceid = pDev->id;
if (pSprite->hot.pScreen == pWin->drawable.pScreen)
{
rep.same_screen = xTrue;
rep.win_x.integral = pSprite->hot.x - pWin->drawable.x;
rep.win_y.integral = pSprite->hot.y - pWin->drawable.y;
rep.win_x = FP1616(pSprite->hot.x - pWin->drawable.x, 0);
rep.win_y = FP1616(pSprite->hot.y - pWin->drawable.y, 0);
for (t = pSprite->win; t; t = t->parent)
if (t->parent == pWin)
{
@ -129,18 +130,18 @@ ProcXIQueryDevicePointer(ClientPtr client)
} else
{
rep.same_screen = xFalse;
rep.win_x.integral = 0;
rep.win_y.integral = 0;
rep.win_x = 0;
rep.win_y = 0;
}
#ifdef PANORAMIX
if(!noPanoramiXExtension) {
rep.root_x.integral += panoramiXdataPtr[0].x;
rep.root_y.integral += panoramiXdataPtr[0].y;
rep.root_x += FP1616(panoramiXdataPtr[0].x, 0);
rep.root_y += FP1616(panoramiXdataPtr[0].y, 0);
if (stuff->win == rep.root)
{
rep.win_x.integral += panoramiXdataPtr[0].x;
rep.win_y.integral += panoramiXdataPtr[0].y;
rep.win_x += FP1616(panoramiXdataPtr[0].x, 0);
rep.win_y += FP1616(panoramiXdataPtr[0].y, 0);
}
}
#endif

View File

@ -47,6 +47,7 @@
#include "eventconvert.h"
#include "querydev.h"
static int countValuators(DeviceEvent *ev, int *first);
static int getValuatorEvents(DeviceEvent *ev, deviceValuator *xv);
static int eventToKeyButtonPointer(DeviceEvent *ev, xEvent **xi, int *count);
@ -384,8 +385,8 @@ eventToDeviceEvent(DeviceEvent *ev, xEvent **xi)
xde->valuators_len = vallen;
xde->deviceid = ev->deviceid;
xde->sourceid = ev->sourceid;
xde->root_x.integral = ev->root_x;
xde->root_y.integral = ev->root_y;
xde->root_x = FP1616(ev->root_x, 0);
xde->root_y = FP1616(ev->root_y, 0);
xde->mods.base_mods = ev->mods.base;
xde->mods.latched_mods = ev->mods.latched;

View File

@ -2226,13 +2226,13 @@ FixUpEventFromWindow(
event->event = pWin->drawable.id;
if (pSprite->hot.pScreen == pWin->drawable.pScreen)
{
event->event_x.integral = event->root_x.integral - pWin->drawable.x;
event->event_y.integral = event->root_y.integral - pWin->drawable.y;
event->event_x = FP1616(event->root_x - pWin->drawable.x, 0);
event->event_y = FP1616(event->root_y - pWin->drawable.y, 0);
event->child = child;
} else
{
event->event_x.integral = 0;
event->event_y.integral = 0;
event->event_x = 0;
event->event_y = 0;
event->child = None;
}
@ -4161,8 +4161,8 @@ DeviceEnterLeaveEvent(
event->deviceid = mouse->id;
event->sourceid = 0; /*XXX */
event->mode = mode;
event->root_x.integral = mouse->spriteInfo->sprite->hot.x;
event->root_y.integral = mouse->spriteInfo->sprite->hot.y;
event->root_x = FP1616(mouse->spriteInfo->sprite->hot.x, 0);
event->root_y = FP1616(mouse->spriteInfo->sprite->hot.y, 0);
for (i = 0; mouse && mouse->button && i < mouse->button->numButtons; i++)
if (BitIsOn(mouse->button->down, i))

View File

@ -28,6 +28,8 @@
#include "input.h"
#include "events.h"
#define FP1616(integral, frac) (integral * (1 << 16) + frac * (1 << 16))
_X_INTERNAL int EventToCore(InternalEvent *event, xEvent *core);
_X_INTERNAL int EventToXI(InternalEvent *ev, xEvent **xi, int *count);
_X_INTERNAL int EventToXI2(InternalEvent *ev, xEvent **xi);