[PATCH] dix: set the device transformation matrix

Chase Douglas chase.douglas at ubuntu.com
Thu Sep 20 08:59:53 PDT 2012


On Wed, Sep 19, 2012 at 12:56 PM, Peter Hutterer
<peter.hutterer at who-t.net> wrote:
> The property handler is registered after setting the property, so
> dev->transform remains as all-zeros. That causes pixman_f_transform_invert()
> to fail (in transformAbsolute()) and invert remains as garbage. This
> may then cause a cursor jump to 0,0.
>
> Since the axes are not yet initialized here and we need to allow for drivers
> changing the matrix, we cannot use the property handler for matrix
> initialization, essentially duplicating the code.
>
> Triggered by the fix to (#49347) in 749a593e49adccdf1225be28a521412ec85333f4
>
> https://bugzilla.redhat.com/show_bug.cgi?id=852841
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
>  dix/devices.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/dix/devices.c b/dix/devices.c
> index 46c759c..77fde80 100644
> --- a/dix/devices.c
> +++ b/dix/devices.c
> @@ -306,6 +306,9 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
>      /* unity matrix */
>      memset(transform, 0, sizeof(transform));
>      transform[0] = transform[4] = transform[8] = 1.0f;
> +    dev->transform.m[0][0] = 1.0;
> +    dev->transform.m[1][1] = 1.0;
> +    dev->transform.m[2][2] = 1.0;
>
>      XIChangeDeviceProperty(dev, XIGetKnownProperty(XI_PROP_TRANSFORM),
>                             XIGetKnownProperty(XATOM_FLOAT), 32,

Makes sense to me.

Reviewed-by: Chase Douglas <chase.douglas at ubuntu.com>


More information about the xorg-devel mailing list