On Wed, May 06, 2009 at 10:39:16AM +0200, Simon Thum wrote: > Peter Hutterer wrote: >> Please add in the commit message why it's ok to remove the "reserved" >> profile, >> just in case someone has to figure that out at a later point in time. > I didn't do that in this patch. Attached patch removes 'reserved' and > provides some more reasoning in the commit msg. >
> From 667b1cf28e38eab6b1b16d3ad2956b5f4d9686e0 Mon Sep 17 00:00:00 2001 > From: Simon Thum <[email protected]> > Date: Tue, 28 Apr 2009 10:11:32 +0200 > Subject: [PATCH] dix: add 'none' pointer acceleration profile with number -1 > > This is a shorthand for disabling acceleration, while retaining the > possiblity to use constant deceleration. If constant deceleration is > also unused, it will optimize motion processing. > > Other possiblities to deactivate acceleration were quite hidden, > and didn't always work as expected. E.g. xset m 1 1 would retain > adaptive deceleration, while xset m 1 0 would not (in the default > profile). > > Also removes the 'reserved' profile; it was unused and it's trivial > to add new ones anyway. > --- > dix/ptrveloc.c | 36 ++++++++++++++++++++++++++++-------- > include/ptrveloc.h | 7 +++---- > 2 files changed, 31 insertions(+), 12 deletions(-) > > diff --git a/dix/ptrveloc.c b/dix/ptrveloc.c > index 7fa4200..dd26477 100644 > --- a/dix/ptrveloc.c > +++ b/dix/ptrveloc.c > @@ -77,9 +77,12 @@ GetAccelerationProfile(DeviceVelocityPtr s, int > profile_num); > #endif > > /******************************** > - * Init/Uninit etc > + * Init/Uninit > *******************************/ > > +/* some int which is not a profile number */ > +#define PROFILE_UNINITIALIZE (-100) > + > /** > * Init struct so it should match the average case > */ > @@ -108,7 +111,7 @@ InitVelocityData(DeviceVelocityPtr s) > static void > FreeVelocityData(DeviceVelocityPtr s){ > xfree(s->tracker); > - SetAccelerationProfile(s, -1); > + SetAccelerationProfile(s, PROFILE_UNINITIALIZE); > } > > > @@ -824,6 +827,16 @@ LinearProfile( > } > > > +static float > +NoProfile( > + DeviceVelocityPtr pVel, > + float velocity, > + float threshold, > + float acc) > +{ > + return 1.0f; > +} > + > static PointerAccelerationProfileFunc > GetAccelerationProfile( > DeviceVelocityPtr s, > @@ -844,8 +857,8 @@ GetAccelerationProfile( > return PowerProfile; > case AccelProfileLinear: > return LinearProfile; > - case AccelProfileReserved: > - /* reserved for future use, e.g. a user-defined profile */ > + case AccelProfileNone: > + return NoProfile; > default: > return NULL; > } > @@ -856,8 +869,10 @@ GetAccelerationProfile( > * Intended to make profiles exchangeable at runtime. > * If you created a profile, give it a number here and in the header to > * make it selectable. In case some profile-specific init is needed, here > - * would be a good place, since FreeVelocityData() also calls this with -1. > - * returns FALSE (0) if profile number is unavailable. > + * would be a good place, since FreeVelocityData() also calls this with > + * PROFILE_UNINITIALIZE. > + * > + * returns FALSE if profile number is unavailable, TRUE otherwise. > */ > int > SetAccelerationProfile( > @@ -867,7 +882,7 @@ SetAccelerationProfile( > PointerAccelerationProfileFunc profile; > profile = GetAccelerationProfile(s, profile_num); > > - if(profile == NULL && profile_num != -1) > + if(profile == NULL && profile_num != PROFILE_UNINITIALIZE) > return FALSE; > > if(s->profile_private != NULL){ > @@ -955,6 +970,11 @@ acceleratePointerPredictable( > if (!num_valuators || !valuators || !velocitydata) > return; > > + if (velocitydata->statistics.profile_number == AccelProfileNone && > + velocitydata->const_acceleration == 1.0f) { > + return; /*we're inactive anyway, so skip the whole thing.*/ > + } > + > if (first_valuator == 0) { > dx = valuators[0]; > px = &valuators[0]; > @@ -988,7 +1008,7 @@ acceleratePointerPredictable( > /* Since it may not be apparent: lrintf() does not offer > * strong statements about rounding; however because we > * process each axis conditionally, there's no danger > - * of a toggling remainder. Its lack of guarantees > hopefully > + * of a toggling remainder. Its lack of guarantees likely > * makes it faster on the average target. */ > *px = lrintf(tmp); > pDev->last.remainder[0] = tmp - (float)*px; > diff --git a/include/ptrveloc.h b/include/ptrveloc.h > index 6ef8c75..83d188c 100644 > --- a/include/ptrveloc.h > +++ b/include/ptrveloc.h > @@ -27,9 +27,9 @@ > > #include <input.h> /* DeviceIntPtr */ > > -/* constants for acceleration profiles; > - * see */ > +/* constants for acceleration profiles */ > > +#define AccelProfileNone -1 > #define AccelProfileClassic 0 > #define AccelProfileDeviceSpecific 1 > #define AccelProfilePolynomial 2 > @@ -37,8 +37,7 @@ > #define AccelProfileSimple 4 > #define AccelProfilePower 5 > #define AccelProfileLinear 6 > -#define AccelProfileReserved 7 > -#define AccelProfileLAST AccelProfileReserved > +#define AccelProfileLAST AccelProfileLinear > > /* fwd */ > struct _DeviceVelocityRec; > -- > 1.6.0.6 thanks, merged. Cheers, Peter _______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
