On Wed, Oct 20, 2010 at 6:16 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 than

usbParseChannel()

> to queuing logic.
>
> Also, rename to wcmDispatchEvents() since some WCM_PROTOCOL_GENERIC

And usbDispatchEvents()

Nothing, really ;-).

Ping

> devices can send events that need to be placed in multiple channels.
>
> Signed-off-by: Chris Bagwell <ch...@cnpbagwell.com>
> Acked-by: Peter Hutterer <peter.hutte...@who-t.net>
> ---
>  src/wcmUSB.c |   46 ++++++++++++++++++++++++++--------------------
>  1 files changed, 26 insertions(+), 20 deletions(-)
>
> diff --git a/src/wcmUSB.c b/src/wcmUSB.c
> index c6cc98c..77236c4 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 usbDispatchEvents(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 */
> +       usbDispatchEvents(pInfo);
>
>  skipEvent:
>        private->wcmEventCnt = 0;
> @@ -1205,15 +1192,16 @@ static void usbParseKeyEvent(WacomCommonPtr common,
>        }
>  }
>
> -static void usbParseChannel(InputInfoPtr pInfo, int channel)
> +static void usbDispatchEvents(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
>
>
> ------------------------------------------------------------------------------
> Nokia and AT&T present the 2010 Calling All Innovators-North America contest
> Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
> $10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
> Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store
> http://p.sf.net/sfu/nokia-dev2dev
> _______________________________________________
> Linuxwacom-devel mailing list
> Linuxwacom-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
>

------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to