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->deviceid = dev->id;
xi2event->sourceid = 0; /*XXX */ xi2event->sourceid = 0; /*XXX */
xi2event->mode = mode; xi2event->mode = mode;
xi2event->root_x.integral = mouse->spriteInfo->sprite->hot.x; xi2event->root_x = FP1616(mouse->spriteInfo->sprite->hot.x, 0);
xi2event->root_y.integral = mouse->spriteInfo->sprite->hot.y; xi2event->root_y = FP1616(mouse->spriteInfo->sprite->hot.y, 0);
for (i = 0; mouse && mouse->button && i < mouse->button->numButtons; i++) for (i = 0; mouse && mouse->button && i < mouse->button->numButtons; i++)
if (BitIsOn(mouse->button->down, i)) if (BitIsOn(mouse->button->down, i))

View File

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

View File

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

View File

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

View File

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

View File

@ -28,6 +28,8 @@
#include "input.h" #include "input.h"
#include "events.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 EventToCore(InternalEvent *event, xEvent *core);
_X_INTERNAL int EventToXI(InternalEvent *ev, xEvent **xi, int *count); _X_INTERNAL int EventToXI(InternalEvent *ev, xEvent **xi, int *count);
_X_INTERNAL int EventToXI2(InternalEvent *ev, xEvent **xi); _X_INTERNAL int EventToXI2(InternalEvent *ev, xEvent **xi);