summaryrefslogtreecommitdiff
path: root/src/wcmXCommand.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2012-02-22 16:52:52 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2012-03-01 10:31:35 +1000
commitc21b6876b435bb34112956716fea14477ef9e8d7 (patch)
tree1818c6eeac51b7ba88a9296d59f1344ccc3d1f2b /src/wcmXCommand.c
parent632134f4697935ada00d72bc19286f551b42da53 (diff)
Export current tool ID in the property too
Previously, we exported old serial number, old tool ID and current serial number. Export the current tool ID as well. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chris Bagwell <chris@cnpbagwell.com> Tested-by: Bastien Nocera <hadess@hadess.net>
Diffstat (limited to 'src/wcmXCommand.c')
-rw-r--r--src/wcmXCommand.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/wcmXCommand.c b/src/wcmXCommand.c
index 0fd5664..57b3f20 100644
--- a/src/wcmXCommand.c
+++ b/src/wcmXCommand.c
@@ -190,7 +190,8 @@ void InitWcmDeviceProperties(InputInfoPtr pInfo)
values[1] = priv->old_serial;
values[2] = priv->old_device_id;
values[3] = priv->cur_serial;
- prop_serials = InitWcmAtom(pInfo->dev, WACOM_PROP_SERIALIDS, XA_INTEGER, 32, 4, values);
+ values[4] = priv->cur_device_id;
+ prop_serials = InitWcmAtom(pInfo->dev, WACOM_PROP_SERIALIDS, XA_INTEGER, 32, 5, values);
values[0] = priv->serial;
prop_serial_binding = InitWcmAtom(pInfo->dev, WACOM_PROP_SERIAL_BIND, XA_INTEGER, 32, 1, values);
@@ -718,7 +719,7 @@ int wcmSetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop,
* set it at runtime. If we get here from wcmUpdateSerial,
* we know the serial has ben set internally already, so we
* can reply with success. */
- if (prop->size == 4 && prop->format == 32)
+ if (prop->size == 5 && prop->format == 32)
if (((CARD32*)prop->data)[3] == priv->cur_serial)
return Success;
@@ -875,11 +876,12 @@ int wcmGetProperty (DeviceIntPtr dev, Atom property)
values[1] = priv->old_serial;
values[2] = priv->old_device_id;
values[3] = priv->cur_serial;
+ values[4] = priv->cur_device_id;
DBG(10, priv, "Update to serial: %d\n", priv->old_serial);
return XIChangeDeviceProperty(dev, property, XA_INTEGER, 32,
- PropModeReplace, 4,
+ PropModeReplace, 5,
values, FALSE);
}
@@ -892,14 +894,14 @@ serialTimerFunc(OsTimerPtr timer, CARD32 now, pointer arg)
InputInfoPtr pInfo = arg;
WacomDevicePtr priv = pInfo->private;
XIPropertyValuePtr prop;
- CARD32 prop_value[4];
+ CARD32 prop_value[5];
int sigstate;
int rc;
sigstate = xf86BlockSIGIO();
rc = XIGetDeviceProperty(pInfo->dev, prop_serials, &prop);
- if (rc != Success || prop->format != 32 || prop->size != 4)
+ if (rc != Success || prop->format != 32 || prop->size != 5)
{
xf86Msg(X_ERROR, "%s: Failed to update serial number.\n",
pInfo->name);
@@ -908,6 +910,7 @@ serialTimerFunc(OsTimerPtr timer, CARD32 now, pointer arg)
memcpy(prop_value, prop->data, sizeof(prop_value));
prop_value[3] = priv->cur_serial;
+ prop_value[4] = priv->cur_device_id;
XIChangeDeviceProperty(pInfo->dev, prop_serials, XA_INTEGER,
prop->format, PropModeReplace,
@@ -919,7 +922,7 @@ serialTimerFunc(OsTimerPtr timer, CARD32 now, pointer arg)
}
void
-wcmUpdateSerial(InputInfoPtr pInfo, unsigned int serial)
+wcmUpdateSerial(InputInfoPtr pInfo, unsigned int serial, int id)
{
WacomDevicePtr priv = pInfo->private;
@@ -927,6 +930,7 @@ wcmUpdateSerial(InputInfoPtr pInfo, unsigned int serial)
return;
priv->cur_serial = serial;
+ priv->cur_device_id = id;
/* This function is called during SIGIO. Schedule timer for property
* event delivery outside of signal handler. */