On 04/20/2011 08:28 AM, Peter Hutterer wrote:
> Signed-off-by: Peter Hutterer <[email protected]>
> ---
>  dix/ptrveloc.c |   23 ++++++++++++-----------
>  1 files changed, 12 insertions(+), 11 deletions(-)
> 
> diff --git a/dix/ptrveloc.c b/dix/ptrveloc.c
> index be5f626..6fef0ee 100644
> --- a/dix/ptrveloc.c
> +++ b/dix/ptrveloc.c
> @@ -546,6 +546,7 @@ GetDirection(int dx, int dy){
>  
>  /* convert offset (age) to array index */
>  #define TRACKER_INDEX(s, d) (((s)->num_tracker + (s)->cur_tracker - (d)) % 
> (s)->num_tracker)
> +#define TRACKER(s, d) &(s)->tracker[TRACKER_INDEX(s,d)]
>  
>  static inline void
>  FeedTrackers(DeviceVelocityPtr vel, int dx, int dy, int cur_t)
> @@ -589,15 +590,15 @@ CalcTracker(const MotionTracker *tracker, int cur_t){
>   */
>  static float
>  QueryTrackers(DeviceVelocityPtr vel, int cur_t){
> -    int n, offset, dir = UNDEFINED, i = -1, age_ms;
> +    int offset, dir = UNDEFINED, i = -1, age_ms;
>      /* initial velocity: a low-offset, valid velocity */
>      float iveloc = 0, res = 0, tmp, vdiff;
>      float vfac =  vel->corr_mul * vel->const_acceleration; /* premultiply */
>      /* loop from current to older data */
>      for(offset = 1; offset < vel->num_tracker; offset++){
> -     n = TRACKER_INDEX(vel, offset);
> +     MotionTracker *tracker = TRACKER(vel, offset);
>  
> -     age_ms = cur_t - vel->tracker[n].time;
> +     age_ms = cur_t - tracker->time;
>  
>       /* bail out if data is too old and protect from overrun */
>       if (age_ms >= vel->reset_time || age_ms < 0) {
> @@ -611,15 +612,15 @@ QueryTrackers(DeviceVelocityPtr vel, int cur_t){
>        * even more precision we could subdivide as a final step, so possible
>        * non-linearities are accounted for.
>        */
> -     dir &= vel->tracker[n].dir;
> -     if(dir == 0){
> +     dir &= tracker->dir;
> +     if(dir == 0){ /* we've changed octant of movement (e.g. NE → NW) */
>           DebugAccelF("(dix prtacc) query: no longer linear\n");
>           /* instead of breaking it we might also inspect the partition after,
>            * but actual improvement with this is probably rare. */
>           break;
>       }
>  
> -     tmp = CalcTracker(&vel->tracker[n], cur_t) * vfac;
> +     tmp = CalcTracker(tracker, cur_t) * vfac;
>  
>       if ((iveloc == 0 || offset <= vel->initial_range) && tmp != 0) {
>           /* set initial velocity and result */
> @@ -648,17 +649,17 @@ QueryTrackers(DeviceVelocityPtr vel, int cur_t){
>       i = vel->num_tracker-1;
>      }
>      if(i>=0){
> -        n = TRACKER_INDEX(vel, i);
> +#ifdef PTRACCEL_DEBUGGING
> +     MotionTracker *tracker = TRACKER(vel, i);
>       DebugAccelF("(dix prtacc) result: offset %i [dx: %i dy: %i diff: %i]\n",
> -                 i,
> -                 vel->tracker[n].dx,
> -                 vel->tracker[n].dy,
> -                 cur_t - vel->tracker[n].time);
> +                 i, tracker->dx, tracker->dy, cur_t - tracker->time);
> +#endif
>      }
>      return res;
>  }
>  
>  #undef TRACKER_INDEX
> +#undef TRACKER
>  
>  /**
>   * Perform velocity approximation based on 2D 'mickeys' (mouse motion delta).
Even more better ;)

Reviewed-by: Simon Thum <[email protected]>

Cheers,

Simon

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to