summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2009-04-19 22:12:11 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2009-04-19 22:28:12 +1000
commit54716fd3dbc251db9d251d1d0435942efaa63259 (patch)
treed065ba481e24c35a5479b7a1a9ea69599e30e8eb
parent129ac9a9145323e3f126590b491e718f976f80ce (diff)
Convert to using int32_t fixed point values on the wire.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--Xi/exevents.c4
-rw-r--r--Xi/extinit.c24
-rw-r--r--Xi/querydp.c21
-rw-r--r--dix/eventconvert.c5
-rw-r--r--dix/events.c12
-rw-r--r--include/eventconvert.h2
6 files changed, 32 insertions, 36 deletions
diff --git a/Xi/exevents.c b/Xi/exevents.c
index 6d85b1be2..af144313b 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -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))
diff --git a/Xi/extinit.c b/Xi/extinit.c
index 9628dffb8..fa7031e6c 100644
--- a/Xi/extinit.c
+++ b/Xi/extinit.c
@@ -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);
diff --git a/Xi/querydp.c b/Xi/querydp.c
index 5be0cea17..1b45ae2b2 100644
--- a/Xi/querydp.c
+++ b/Xi/querydp.c
@@ -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
diff --git a/dix/eventconvert.c b/dix/eventconvert.c
index b69d9d32e..d97ed811f 100644
--- a/dix/eventconvert.c
+++ b/dix/eventconvert.c
@@ -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;
diff --git a/dix/events.c b/dix/events.c
index a308422ad..1057eb4e5 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -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))
diff --git a/include/eventconvert.h b/include/eventconvert.h
index f458af729..dc3fd736d 100644
--- a/include/eventconvert.h
+++ b/include/eventconvert.h
@@ -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);