summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2009-04-24 10:17:29 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2009-04-28 09:51:36 +1000
commit884684db6bf6f9257888cac5d5b3371591581df2 (patch)
treeec9c8e979f9a1728ce9e6e2b746774d006b43bde
parent9ce4f0d52f10487a3bf984d247671eef6656c46b (diff)
synclient: fix 64 bit issues for float properties.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Henrik Rydberg <rydberg@euromail.se> (cherry picked from commit 4f58454f53432f67d221ace60675499d8cee2411)
-rw-r--r--tools/synclient.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/tools/synclient.c b/tools/synclient.c
index 39b3bf6..2ebd458 100644
--- a/tools/synclient.c
+++ b/tools/synclient.c
@@ -53,6 +53,12 @@
#endif
#endif
+union flong { /* Xlibs 64-bit property handling madness */
+ long l;
+ float f;
+};
+
+
enum ParaType {
PT_INT,
PT_BOOL,
@@ -531,7 +537,7 @@ dp_set_variables(Display *dpy, XDevice* dev, int argc, char *argv[], int first_c
unsigned char* data;
unsigned long nitems, bytes_after;
- float *f;
+ union flong *f;
long *n;
char *b;
@@ -584,8 +590,8 @@ dp_set_variables(Display *dpy, XDevice* dev, int argc, char *argv[], int first_c
par->name, format);
break;
}
- f = (float*)data;
- f[par->prop_offset] = val;
+ f = (union flong*)data;
+ f[par->prop_offset].f = val;
break;
}
@@ -606,7 +612,7 @@ dp_show_settings(Display *dpy, XDevice *dev)
unsigned char* data;
int len;
- float *f;
+ union flong *f;
long *i;
char *b;
@@ -660,8 +666,8 @@ dp_show_settings(Display *dpy, XDevice *dev)
break;
}
- f = (float*)data;
- printf(" %-23s = %g\n", par->name, f[par->prop_offset]);
+ f = (union flong*)data;
+ printf(" %-23s = %g\n", par->name, f[par->prop_offset].f);
break;
}