diff options
author | marha <marha@users.sourceforge.net> | 2011-04-07 07:49:55 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-04-07 07:49:55 +0000 |
commit | 143921f2eb615190ed77e57a6f93f02ffb325c91 (patch) | |
tree | 19c73ab0992ee863cc67e7b98da84d2347a77ef7 /xorg-server/dix/eventconvert.c | |
parent | e2b908c356746281aba48128da7dc15a28f5a773 (diff) | |
parent | de1c6801fc854692d39fb2f8d53bf54ab25a1287 (diff) | |
download | vcxsrv-143921f2eb615190ed77e57a6f93f02ffb325c91.tar.gz vcxsrv-143921f2eb615190ed77e57a6f93f02ffb325c91.tar.bz2 vcxsrv-143921f2eb615190ed77e57a6f93f02ffb325c91.zip |
svn merge ^/branches/released .
Diffstat (limited to 'xorg-server/dix/eventconvert.c')
-rw-r--r-- | xorg-server/dix/eventconvert.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/xorg-server/dix/eventconvert.c b/xorg-server/dix/eventconvert.c index 6af142860..4fe325922 100644 --- a/xorg-server/dix/eventconvert.c +++ b/xorg-server/dix/eventconvert.c @@ -383,12 +383,12 @@ getValuatorEvents(DeviceEvent *ev, deviceValuator *xv) int i;
int state = 0;
int first_valuator, num_valuators;
- DeviceIntPtr dev = NULL;
num_valuators = countValuators(ev, &first_valuator);
if (num_valuators > 0)
{
+ DeviceIntPtr dev = NULL;
dixLookupDevice(&dev, ev->deviceid, serverClient, DixUseAccess);
/* State needs to be assembled BEFORE the device is updated. */
state = (dev && dev->key) ? XkbStateFieldFromRec(&dev->key->xkbInfo->state) : 0;
@@ -405,14 +405,10 @@ getValuatorEvents(DeviceEvent *ev, deviceValuator *xv) xv->deviceid = ev->deviceid;
xv->device_state = state;
- for (j = 0; j < xv->num_valuators; j++) {
- if (BitIsOn(ev->valuators.mask, xv->first_valuator + j))
- valuators[j] = ev->valuators.data[xv->first_valuator + j];
- else if (dev->valuator->axes[xv->first_valuator + j].mode == Absolute)
- valuators[j] = dev->valuator->axisVal[xv->first_valuator + j];
- else
- valuators[j] = 0;
- }
+ /* Unset valuators in masked valuator events have the proper data values
+ * in the case of an absolute axis in between two set valuators. */
+ for (j = 0; j < xv->num_valuators; j++)
+ valuators[j] = ev->valuators.data[xv->first_valuator + j];
if (i + 6 < num_valuators)
xv->deviceid |= MORE_EVENTS;
|