diff options
| author | 2011-05-25 14:43:34 -0700 | |
|---|---|---|
| committer | 2011-05-25 14:43:34 -0700 | |
| commit | 01fdb1bb41dbdfa8366f4d957ef09ba1a8c4a8bb (patch) | |
| tree | b2e51ea79ac3fb83fa91c0e9906817eacbd203cb /libs/ui/Input.cpp | |
| parent | 12e858f392a9feaf24afc7b19753b71b8c559b21 (diff) | |
| parent | d3e6d3e763544511a870b354f657600d25c42b91 (diff) | |
am 86ea1f5f: Initial checkin of spot presentation for touchpad gestures. (DO NOT MERGE)
* commit '86ea1f5f521981d075aef56f11693e4f3bc32fdb':
Initial checkin of spot presentation for touchpad gestures. (DO NOT MERGE)
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 0a53d69bef..684c332d11 100644 --- a/libs/ui/Input.cpp +++ b/libs/ui/Input.cpp @@ -831,6 +831,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; @@ -857,6 +858,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; |