On Tue, Apr 17, 2012 at 04:33:28PM -0700, Chase Douglas wrote: > The physical button state is reported by XIQueryPointer for clients
this should read "logical button state" and I believe TouchClassRec::state already has exactly this information, right? Cheers, Peter > supporting XI 2.1 and earlier. > > Signed-off-by: Chase Douglas <chase.doug...@canonical.com> > --- > Xi/exevents.c | 14 ++++++++++++-- > include/inputstr.h | 3 ++- > 2 files changed, 14 insertions(+), 3 deletions(-) > > diff --git a/Xi/exevents.c b/Xi/exevents.c > index 90b7c4d..724b228 100644 > --- a/Xi/exevents.c > +++ b/Xi/exevents.c > @@ -951,7 +951,12 @@ UpdateDeviceState(DeviceIntPtr device, DeviceEvent > *event) > BUG_WARN(!b || !v); > BUG_WARN(!t); > > - if (!b || !t || !b->map[key]) > + if (!b || !t) > + return DONT_PROCESS; > + > + SetBit(t->down, key); > + > + if (!b->map[key]) > return DONT_PROCESS; > > if (!(event->flags & TOUCH_POINTER_EMULATED) || > @@ -966,7 +971,12 @@ UpdateDeviceState(DeviceIntPtr device, DeviceEvent > *event) > BUG_WARN(!b || !v); > BUG_WARN(!t); > > - if (!b || !t || t->buttonsDown <= 0 || !b->map[key]) > + if (!b || !t) > + return DONT_PROCESS; > + > + ClearBit(t->down, key); > + > + if (t->buttonsDown <= 0 || !b->map[key]) > return DONT_PROCESS; > > if (!(event->flags & TOUCH_POINTER_EMULATED)) > diff --git a/include/inputstr.h b/include/inputstr.h > index 5a38924..31c1e78 100644 > --- a/include/inputstr.h > +++ b/include/inputstr.h > @@ -342,7 +342,8 @@ typedef struct _TouchClassRec { > CARD8 mode; /* ::XIDirectTouch, XIDependentTouch */ > /* for pointer-emulation */ > CARD8 buttonsDown; /* number of buttons down */ > - unsigned short state; /* logical button state */ > + CARD8 down[DOWN_LENGTH]; /* physical emulated button state */ > + unsigned short state; /* logical emulated button state */ > Mask motionMask; > } TouchClassRec; > > -- > 1.7.9.1 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel