On Mon, Apr 11, 2011 at 6:15 PM, Peter Hutterer <peter.hutte...@who-t.net> wrote: > > Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> > --- > >> I could remove WCM_LCD from the definition of WCM_TPC but I think the >> more correct fix would actually be changing TabletHasFeature(common, >> feature): >> >> from >> >> (((common->tablet_type) & (feature)) != 0) >> >> to >> >> (((common->tablet_type) & (feature)) == feature) >> >> I'll be working on some other patches first in case anybody wants to >> give some more feedback. > > I've had this patch in my devel tree for a while but haven't started using > it yet. Was born of the same problem that the == 0 check didn't cover what I > needed at the time. Maybe we should use these instead. > > src/xf86WacomDefs.h | 14 ++++++++++++++ > test/wacom-tests.c | 21 +++++++++++++++++++++ > 2 files changed, 35 insertions(+), 0 deletions(-) > > diff --git a/src/xf86WacomDefs.h b/src/xf86WacomDefs.h > index cae441c..9063fc0 100644 > --- a/src/xf86WacomDefs.h > +++ b/src/xf86WacomDefs.h > @@ -104,6 +104,20 @@ > #define OFF(x) ((x)%BITS_PER_LONG) > #define LONG(x) ((x)/BITS_PER_LONG) > > +/** > + * Test if the mask is set in the given bitfield. > + * @return TRUE if set or FALSE otherwise. > + */ > +#define MaskIsSet(bitfield, mask) !!(((bitfield) & (mask)) == (mask)) > +/** > + * Set the given mask for the given bitfield. > + */ > +#define MaskSet(bitfield, mask) ((bitfield) |= (mask)) > +/** > + * Clear the given mask from the given bitfield > + */ > +#define MaskClear(bitfield, mask) ((bitfield) &= ~(mask)) > + > /****************************************************************************** > * Forward Declarations > *****************************************************************************/ > diff --git a/test/wacom-tests.c b/test/wacom-tests.c > index 42a7557..e0891ae 100644 > --- a/test/wacom-tests.c > +++ b/test/wacom-tests.c > @@ -531,6 +531,26 @@ static void test_set_type(void) > #undef reset > } > > +static int test_flag_set(void) > +{ > + int i; > + unsigned int flags = 0; > + > + for (i = 0; i < sizeof(flags); i++) > + { > + int mask = 1 << i; > + flags = 0; > + > + assert(!MaskIsSet(flags, mask)); > + MaskSet(flags, mask); > + assert(flags != 0); > + assert(MaskIsSet(flags, mask)); > + MaskClear(flags, mask); > + assert(!MaskIsSet(flags, mask)); > + assert(flags == 0); > + } > +} > + > int main(int argc, char** argv) > { > test_common_ref(); > @@ -541,6 +561,7 @@ int main(int argc, char** argv) > test_tilt_to_rotation(); > test_mod_buttons(); > test_set_type(); > + test_flag_set(); > return 0; > } > > -- > 1.7.4.2 >
Those look solid to me, and I'd be fine with them migrating their way out of development. :) Jason --- Day xee-nee-svsh duu-'ushtlh-ts'it; nuu-wee-ya' duu-xan' 'vm-nvshtlh-ts'it. Huu-chan xuu naa~-gha. ------------------------------------------------------------------------------ Forrester Wave Report - Recovery time is now measured in hours and minutes not days. Key insights are discussed in the 2010 Forrester Wave Report as part of an in-depth evaluation of disaster recovery service providers. Forrester found the best-in-class provider in terms of services and vision. Read this report now! http://p.sf.net/sfu/ibm-webcastpromo _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel