On 04/20/2011 08:28 AM, Peter Hutterer wrote:
> Signed-off-by: Peter Hutterer <[email protected]>
> ---
>  dix/ptrveloc.c |    8 +++++++-
>  1 files changed, 7 insertions(+), 1 deletions(-)
> 
> diff --git a/dix/ptrveloc.c b/dix/ptrveloc.c
> index fafbbb0..d37d1d9 100644
> --- a/dix/ptrveloc.c
> +++ b/dix/ptrveloc.c
> @@ -506,7 +506,13 @@ DoGetDirection(int dx, int dy){
>  #define DIRECTION_CACHE_RANGE 5
>  #define DIRECTION_CACHE_SIZE (DIRECTION_CACHE_RANGE*2+1)
>  
> -/* cache DoGetDirection(). */
> +/* cache DoGetDirection().
> + * To avoid excessive use of direction calculation, cache the values for
> + * [-5..5] for both x/y. Anything outside of that is calcualted on the fly.
> + *
> + * @return A bitmask for N, NE, S, SE, etc. indicating the directions for
> + * this movement.
> + */
>  static int
>  GetDirection(int dx, int dy){
>      static int cache[DIRECTION_CACHE_SIZE][DIRECTION_CACHE_SIZE];
Reviewed-by: Simon Thum <[email protected]>

Since high-precision (i.e. high-dx/dy) devices become more common, you
might want to increase the range to avoid those atan2()s, or shift back
into range. Precision isn't paramount here.

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