aboutsummaryrefslogtreecommitdiff
path: root/src/evdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/evdev.c')
-rw-r--r--src/evdev.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/evdev.c b/src/evdev.c
index f9c6fde..0cd016a 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -306,7 +306,9 @@ EvdevReadInput(InputInfoPtr pInfo)
}
}
-#define TestBit(bit, array) (array[(bit) / 8] & (1 << ((bit) % 8)))
+#define LONG_BITS (sizeof(long) * 8)
+#define NBITS(x) (((x) + LONG_BITS - 1) / LONG_BITS)
+#define TestBit(bit, array) (array[(bit) / LONG_BITS]) & (1 << ((bit) % LONG_BITS))
static void
EvdevPtrCtrlProc(DeviceIntPtr device, PtrCtrl *ctrl)
@@ -895,9 +897,9 @@ EvdevConvert(InputInfoPtr pInfo, int first, int num, int v0, int v1, int v2,
static int
EvdevProbe(InputInfoPtr pInfo)
{
- char key_bitmask[(KEY_MAX + 7) / 8];
- char rel_bitmask[(REL_MAX + 7) / 8];
- char abs_bitmask[(ABS_MAX + 7) / 8];
+ long key_bitmask[NBITS(KEY_MAX)];
+ long rel_bitmask[NBITS(REL_MAX)];
+ long abs_bitmask[NBITS(ABS_MAX)];
int i, has_axes, has_buttons, has_keys;
EvdevPtr pEvdev = pInfo->private;