From f4f09d40e0fd94d267b280f2a82385dca1141347 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Sat, 16 May 2009 11:31:03 +1000 Subject: [PATCH] XI2.h: remove XI2Mask, add XISetMask and friends. XISetMask, XIClearMask, XIMaskIsSet serve to set, clear or check a bit in the provided array. XIMaskLen is a macro to get the minimum length of a mask for a given event type. They are expected to be common ways to deal with event masks, i.e. clients will do: unsigned char mask[XIMaskLen(XI_ButtonRelease)] = {0}; XISetMask(mask, XI_ButtonPress) XISetMask(mask, XI_ButtonRelease) Signed-off-by: Peter Hutterer --- XI2.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/XI2.h b/XI2.h index 8faec5e..cc8d3c4 100644 --- a/XI2.h +++ b/XI2.h @@ -89,9 +89,13 @@ #define XIButtonClass 1 #define XIValuatorClass 2 -/* XI2 mask macro */ -#define XIMASK(event) (1 << (event)) +/* XI2 event mask macros */ +#define XISetMask(ptr, event) (((unsigned char*)(ptr))[(event)>>3] |= (1 << ((event) & 7))) +#define XIClearMask(ptr, event) (((unsigned char*)(ptr))[(event)>>3] &= ~(1 << ((event) & 7))) +#define XIMaskIsSet(ptr, event) (((unsigned char*)(ptr))[(event)>>3] & (1 << ((event) & 7))) +#define XIMaskLen(event) ((event >> 3)) +/* Fake device ID's for event selection */ #define XIAllDevices 0 #define XIAllMasterDevices 1