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
