diff options
| author | 2011-04-19 15:37:32 -0700 | |
|---|---|---|
| committer | 2011-04-19 15:37:32 -0700 | |
| commit | 3f14891fc9e764d97de07b109f066aedfff90c2e (patch) | |
| tree | 7d026487ee719489cea2c1237901ef6cf325efe2 /libs/ui/Input.cpp | |
| parent | 05d30b14843bf7cf252873f4d0d39706878b28c2 (diff) | |
| parent | 2352b978a3c94cd88f41d0d908f961333fdac1e9 (diff) | |
Merge "Initial checkin of spot presentation for touchpad gestures."
Diffstat (limited to 'libs/ui/Input.cpp')
| -rw-r--r-- | libs/ui/Input.cpp | 9 | 
1 files changed, 9 insertions, 0 deletions
| diff --git a/libs/ui/Input.cpp b/libs/ui/Input.cpp index bbe579ea83f2..a95f4326193b 100644 --- a/libs/ui/Input.cpp +++ b/libs/ui/Input.cpp @@ -832,6 +832,7 @@ bool VelocityTracker::getVelocity(uint32_t id, float* outVx, float* outVy) const          const Position& oldestPosition =                  oldestMovement.positions[oldestMovement.idBits.getIndexOfBit(id)];          nsecs_t lastDuration = 0; +          while (numTouches-- > 1) {              if (++index == HISTORY_SIZE) {                  index = 0; @@ -858,6 +859,14 @@ bool VelocityTracker::getVelocity(uint32_t id, float* outVx, float* outVy) const          // Make sure we used at least one sample.          if (samplesUsed != 0) { +            // Scale the velocity linearly if the window of samples is small. +            nsecs_t totalDuration = newestMovement.eventTime - oldestMovement.eventTime; +            if (totalDuration < MIN_WINDOW) { +                float scale = float(totalDuration) / float(MIN_WINDOW); +                accumVx *= scale; +                accumVy *= scale; +            } +              *outVx = accumVx;              *outVy = accumVy;              return true; |