On Sun, Oct 17, 2010 at 7:38 PM, <ch...@cnpbagwell.com> wrote: > From: Chris Bagwell <ch...@cnpbagwell.com> > > usbParseEvent() is for queue'ing up events until a full sync > window occurs. It was also selecting a channel related > to all queued events. > > Move channel selection logic to function that processes all events > (wcmParseChannel()) since its more related to that logic then
Change "then" to "than", to prove that I have really read the patch :). > to queuing logic. > > Also, rename to wcmParseEvents() since some WCM_PROTOCOL_GENERIC Can we rename it to usbDispatchEvents (usbParseEvents is what you used :)? With usbParseEvents and usbParseEvent, one of them sounds like an typo. I have no problem with the code chnage. Ping > devices can send events that need to be placed in multiple channels. > > Signed-off-by: Chris Bagwell <ch...@cnpbagwell.com> > --- > src/wcmUSB.c | 46 ++++++++++++++++++++++++++-------------------- > 1 files changed, 26 insertions(+), 20 deletions(-) > > diff --git a/src/wcmUSB.c b/src/wcmUSB.c > index c6cc98c..eb4778e 100644 > --- a/src/wcmUSB.c > +++ b/src/wcmUSB.c > @@ -52,7 +52,7 @@ static int usbParse(InputInfoPtr pInfo, const unsigned > char* data, int len); > static int usbDetectConfig(InputInfoPtr pInfo); > static void usbParseEvent(InputInfoPtr pInfo, > const struct input_event* event); > -static void usbParseChannel(InputInfoPtr pInfo, int channel); > +static void usbParseEvents(InputInfoPtr pInfo); > static int usbChooseChannel(WacomCommonPtr common); > > WacomDeviceClass gWacomUSBDevice = > @@ -865,7 +865,6 @@ static int usbChooseChannel(WacomCommonPtr common) > static void usbParseEvent(InputInfoPtr pInfo, > const struct input_event* event) > { > - int channel; > WacomDevicePtr priv = (WacomDevicePtr)pInfo->private; > WacomCommonPtr common = priv->common; > wcmUSBData* private = common->private; > @@ -937,20 +936,8 @@ static void usbParseEvent(InputInfoPtr pInfo, > goto skipEvent; > } > > - channel = usbChooseChannel(common); > - > - /* couldn't decide channel? invalid data */ > - if (channel == -1) goto skipEvent; > - > - if (!common->wcmChannel[channel].work.proximity) > - { > - memset(&common->wcmChannel[channel],0,sizeof(WacomChannel)); > - /* in case the in-prox event was missing */ > - common->wcmChannel[channel].work.proximity = 1; > - } > - > - /* dispatch event */ > - usbParseChannel(pInfo,channel); > + /* dispatch all queued events */ > + usbParseEvents(pInfo); > > skipEvent: > private->wcmEventCnt = 0; > @@ -1205,15 +1192,16 @@ static void usbParseKeyEvent(WacomCommonPtr common, > } > } > > -static void usbParseChannel(InputInfoPtr pInfo, int channel) > +static void usbParseEvents(InputInfoPtr pInfo) > { > int i; > WacomDeviceState* ds; > struct input_event* event; > WacomDevicePtr priv = (WacomDevicePtr)pInfo->private; > WacomCommonPtr common = priv->common; > - WacomChannelPtr pChannel = common->wcmChannel + channel; > - WacomDeviceState dslast = pChannel->valid.state; > + int channel; > + WacomChannelPtr pChannel; > + WacomDeviceState dslast; > wcmUSBData* private = common->private; > > DBG(6, common, "%d events received\n", private->wcmEventCnt); > @@ -1222,7 +1210,25 @@ static void usbParseChannel(InputInfoPtr pInfo, int > channel) > DBG(6, common, "no real events received\n"); > return; > } > - DBG(6, common, "%d events received\n", private->wcmEventCnt); > + > + channel = usbChooseChannel(common); > + > + /* couldn't decide channel? invalid data */ > + if (channel == -1) { > + private->wcmEventCnt = 0; > + return; > + } > + > + pChannel = common->wcmChannel + channel; > + dslast = pChannel->valid.state; > + > + if (!common->wcmChannel[channel].work.proximity) > + { > + memset(&common->wcmChannel[channel],0,sizeof(WacomChannel)); > + > + /* in case the in-prox event was missing */ > + common->wcmChannel[channel].work.proximity = 1; > + } > > /* all USB data operates from previous context except relative values*/ > ds = &common->wcmChannel[channel].work; > -- > 1.7.3.1 > > > ------------------------------------------------------------------------------ > Download new Adobe(R) Flash(R) Builder(TM) 4 > The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly > Flex(R) Builder(TM)) enable the development of rich applications that run > across multiple browsers and platforms. Download your free trials today! > http://p.sf.net/sfu/adobe-dev2dev > _______________________________________________ > Linuxwacom-devel mailing list > Linuxwacom-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel > ------------------------------------------------------------------------------ Download new Adobe(R) Flash(R) Builder(TM) 4 The new Adobe(R) Flex(R) 4 and Flash(R) Builder(TM) 4 (formerly Flex(R) Builder(TM)) enable the development of rich applications that run across multiple browsers and platforms. Download your free trials today! http://p.sf.net/sfu/adobe-dev2dev _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel