aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/dix/getevents.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2011-07-04 14:26:33 +0200
committermarha <marha@users.sourceforge.net>2011-07-04 14:26:33 +0200
commit7cc339a490eac34596e97788c3b0092d58459cf6 (patch)
treebc9a29aff5729a5b7314022bc3fea8fdff721dc0 /xorg-server/dix/getevents.c
parent3bbcbc59b6d98f09b26f39d6208faec76cc6aa3e (diff)
parent5c671fd7f8198bed2fc32b33b81d1081f1486ed9 (diff)
downloadvcxsrv-7cc339a490eac34596e97788c3b0092d58459cf6.tar.gz
vcxsrv-7cc339a490eac34596e97788c3b0092d58459cf6.tar.bz2
vcxsrv-7cc339a490eac34596e97788c3b0092d58459cf6.zip
Merge remote-tracking branch 'origin/released'
Conflicts: mesalib/common.py mesalib/docs/GL3.txt mesalib/scons/custom.py mesalib/scons/gallium.py mesalib/src/SConscript xorg-server/Xext/xtest.c xorg-server/dix/getevents.c xorg-server/dix/window.c xorg-server/exa/exa_accel.c xorg-server/exa/exa_migration_classic.c xorg-server/exa/exa_unaccel.c xorg-server/hw/kdrive/ephyr/ephyr.c xorg-server/hw/kdrive/ephyr/ephyr.h xorg-server/hw/kdrive/ephyr/ephyrinit.c xorg-server/hw/kdrive/ephyr/hostx.c xorg-server/hw/kdrive/src/kdrive.h xorg-server/hw/kdrive/src/kinput.c xorg-server/hw/xfree86/common/xf86Init.c xorg-server/hw/xfree86/dri2/dri2.c xorg-server/hw/xnest/Init.c xorg-server/hw/xquartz/darwin.c xorg-server/hw/xquartz/darwinEvents.c xorg-server/hw/xquartz/darwinEvents.h xorg-server/hw/xquartz/darwinXinput.c xorg-server/hw/xwin/InitInput.c xorg-server/include/input.h xorg-server/include/window.h xorg-server/mi/mipointer.c xorg-server/test/Makefile.am xorg-server/test/xi2/protocol-eventconvert.c
Diffstat (limited to 'xorg-server/dix/getevents.c')
-rw-r--r--xorg-server/dix/getevents.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/xorg-server/dix/getevents.c b/xorg-server/dix/getevents.c
index 56b3d6128..7e901942f 100644
--- a/xorg-server/dix/getevents.c
+++ b/xorg-server/dix/getevents.c
@@ -335,6 +335,8 @@ updateSlaveDeviceCoords(DeviceIntPtr master, DeviceIntPtr pDev)
* position of the pointer */
pDev->last.valuators[0] = master->last.valuators[0];
pDev->last.valuators[1] = master->last.valuators[1];
+ pDev->last.remainder[0] = master->last.remainder[0];
+ pDev->last.remainder[1] = master->last.remainder[1];
if (!pDev->valuator)
return;
@@ -354,14 +356,19 @@ updateSlaveDeviceCoords(DeviceIntPtr master, DeviceIntPtr pDev)
if ((lastSlave = master->last.slave) && lastSlave->valuator) {
for (i = 2; i < pDev->valuator->numAxes; i++) {
if (i >= lastSlave->valuator->numAxes)
+ {
pDev->last.valuators[i] = 0;
+ pDev->last.remainder[i] = 0;
+ }
else
+ {
pDev->last.valuators[i] =
rescaleValuatorAxis(pDev->last.valuators[i],
pDev->last.remainder[i],
&pDev->last.remainder[i],
lastSlave->valuator->axes + i,
pDev->valuator->axes + i, 0);
+ }
}
}
@@ -1185,14 +1192,17 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, int buttons
events = UpdateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, &num_events);
- raw = &events->raw_event;
- events++;
- num_events++;
-
valuator_mask_copy(&mask, mask_in);
- init_raw(pDev, raw, ms, type, buttons);
- set_raw_valuators(raw, &mask, raw->valuators.data_raw);
+ if ((flags & POINTER_NORAW) == 0)
+ {
+ raw = &events->raw_event;
+ events++;
+ num_events++;
+
+ init_raw(pDev, raw, ms, type, buttons);
+ set_raw_valuators(raw, &mask, raw->valuators.data_raw);
+ }
if (flags & POINTER_ABSOLUTE)
{
@@ -1231,7 +1241,8 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, int buttons
moveRelative(pDev, &x, &y, &mask);
}
- set_raw_valuators(raw, &mask, raw->valuators.data);
+ if ((flags & POINTER_NORAW) == 0)
+ set_raw_valuators(raw, &mask, raw->valuators.data);
positionSprite(pDev, (flags & POINTER_ABSOLUTE) ? Absolute : Relative,
&x, &y, x_frac, y_frac, scr, &cx, &cy, &cx_frac, &cy_frac);