On Tue, Feb 21, 2012 at 10:54 PM, Peter Hutterer
<[email protected]> wrote:
> 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 <[email protected]>
> ---
> include/wacom-properties.h | 6 ++++--
> src/wcmCommon.c | 6 +++---
> src/wcmXCommand.c | 16 ++++++++++------
> src/xf86Wacom.h | 2 +-
> src/xf86WacomDefs.h | 1 +
> 5 files changed, 19 insertions(+), 12 deletions(-)
>
> diff --git a/include/wacom-properties.h b/include/wacom-properties.h
> index 0bb84b1..2bb86ab 100644
> --- a/include/wacom-properties.h
> +++ b/include/wacom-properties.h
> @@ -33,8 +33,10 @@
> /* 32 bit, 4 values */
> #define WACOM_PROP_PRESSURECURVE "Wacom Pressurecurve"
>
> -/* CARD32, 4 values, tablet id, old serial, old hw device id, current serial
> - read-only */
> +/* CARD32, 4 values, tablet id, old serial, old hw device id,
Should be 5 values, not 4
> + current serial, current device id
> + read-only
> + */
> #define WACOM_PROP_SERIALIDS "Wacom Serial IDs"
>
> /* CARD32, 1 value */
> diff --git a/src/wcmCommon.c b/src/wcmCommon.c
> index 11340ea..65b0390 100644
> --- a/src/wcmCommon.c
> +++ b/src/wcmCommon.c
> @@ -730,8 +730,8 @@ void wcmSendEvents(InputInfoPtr pInfo, const
> WacomDeviceState* ds)
> return;
> }
>
> - if (priv->cur_serial != serial)
> - wcmUpdateSerial(pInfo, serial);
> + if (priv->cur_serial != serial || priv->cur_device_id != id)
> + wcmUpdateSerial(pInfo, serial, id);
>
> /* don't move the cursor when going out-prox */
> if (!ds->proximity)
> @@ -833,7 +833,7 @@ void wcmSendEvents(InputInfoPtr pInfo, const
> WacomDeviceState* ds)
> priv->devReverseCount = 0;
> priv->old_serial = serial;
> priv->old_device_id = id;
> - wcmUpdateSerial(pInfo, 0);
> + wcmUpdateSerial(pInfo, 0, 0);
> }
> }
>
> 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. */
> diff --git a/src/xf86Wacom.h b/src/xf86Wacom.h
> index fc1b4f4..677dfd3 100644
> --- a/src/xf86Wacom.h
> +++ b/src/xf86Wacom.h
> @@ -169,7 +169,7 @@ extern int wcmGetProperty(DeviceIntPtr dev, Atom
> property);
> extern int wcmDeleteProperty(DeviceIntPtr dev, Atom property);
> extern void InitWcmDeviceProperties(InputInfoPtr pInfo);
> extern void wcmUpdateRotationProperty(WacomDevicePtr priv);
> -extern void wcmUpdateSerial(InputInfoPtr pInfo, unsigned int serial);
> +extern void wcmUpdateSerial(InputInfoPtr pInfo, unsigned int serial, int id);
>
> /* Utility functions */
> extern Bool is_absolute(InputInfoPtr pInfo);
> diff --git a/src/xf86WacomDefs.h b/src/xf86WacomDefs.h
> index ef425f5..01aa4d4 100644
> --- a/src/xf86WacomDefs.h
> +++ b/src/xf86WacomDefs.h
> @@ -226,6 +226,7 @@ struct _WacomDeviceRec
> double factorY; /* Y factor */
> unsigned int serial; /* device serial number this device takes (if
> 0, any serial is ok) */
> unsigned int cur_serial; /* current serial in prox */
> + int cur_device_id; /* current device ID in prox */
> int maxWidth; /* max active screen width in screen coords */
> int maxHeight; /* max active screen height in screen coords */
> int leftPadding; /* left padding for virtual tablet in device
> coordinates*/
> --
> 1.7.7.6
>
Forgot to double-check the list for outstanding patches before the RC,
so let me know if you want me to quickly whip up a 0.13.99.2 with this
patch folded in.
Aside from the issue mentioned above:
Reviewed-by: Jason Gerecke <[email protected]>
Jason
---
Day xee-nee-svsh duu-'ushtlh-ts'it;
nuu-wee-ya' duu-xan' 'vm-nvshtlh-ts'it.
Huu-chan xuu naa~-gha.
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel