On Sun, Jan 09, 2011 at 08:39:35PM -0600, Favux ... wrote:
> Thank you Peter.  That was quick!  :)

I take it it works for you now?

i recently upgraded to 64bit when reinstalling a box, so these bugs are
reproducible on my machine now :)

Cheers,
  Peter
> 
> On Sun, Jan 9, 2011 at 8:29 PM, Peter Hutterer <[email protected]> 
> wrote:
> > Xlib for XI 1 expects 32 bit properties as long, even if on the given
> > machine architecture the size of long is actually 64 bit. Hilarity ensues.n
> >
> > Convert the floats to longs before passing it to XChangeDeviceProperty.
> >
> > Signed-off-by: Peter Hutterer <[email protected]>
> > ---
> > this must be the 10th time this api stupidity has bitten me...
> >
> > sorry for the cross-post, patches should go to -devel but this is in
> > response to a -discuss thread.
> >
> >  tools/xsetwacom.c |    9 ++++++++-
> >  1 files changed, 8 insertions(+), 1 deletions(-)
> >
> > diff --git a/tools/xsetwacom.c b/tools/xsetwacom.c
> > index 72c46ec..26d822f 100644
> > --- a/tools/xsetwacom.c
> > +++ b/tools/xsetwacom.c
> > @@ -1966,13 +1966,15 @@ static void get_button(Display *dpy, XDevice *dev, 
> > param_t *param, int argc,
> >        XFlush(dpy);
> >  }
> >
> > -static void _set_matrix_prop(Display *dpy, XDevice *dev, const float 
> > matrix[9])
> > +static void _set_matrix_prop(Display *dpy, XDevice *dev, const float 
> > fmatrix[9])
> >  {
> >        Atom matrix_prop = XInternAtom(dpy, "Coordinate Transformation 
> > Matrix", True);
> >        Atom type;
> >        int format;
> >        unsigned long nitems, bytes_after;
> >        float *data;
> > +       long matrix[9] = {0};
> > +       int i;
> >
> >        if (!matrix_prop)
> >        {
> > @@ -1980,6 +1982,11 @@ static void _set_matrix_prop(Display *dpy, XDevice 
> > *dev, const float matrix[9])
> >                return;
> >        }
> >
> > +       /* XI1 expects 32 bit properties (including float) as long,
> > +        * regardless of architecture */
> > +       for (i = 0; i < sizeof(matrix)/sizeof(matrix[0]); i++)
> > +               *(float*)(matrix + i) = fmatrix[i];
> > +
> >        XGetDeviceProperty(dpy, dev, matrix_prop, 0, 9, False,
> >                                AnyPropertyType, &type, &format, &nitems,
> >                                &bytes_after, (unsigned char**)&data);
> > --
> > 1.7.3.4
> >
> >
> 

------------------------------------------------------------------------------
Gaining the trust of online customers is vital for the success of any company
that requires sensitive data to be transmitted over the Web.   Learn how to 
best implement a security strategy that keeps consumers' information secure 
and instills the confidence they need to proceed with transactions.
http://p.sf.net/sfu/oracle-sfdevnl 
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to