diff options
| author | 2011-05-25 14:46:53 -0700 | |
|---|---|---|
| committer | 2011-05-25 14:46:53 -0700 | |
| commit | 3c2fb0242b0ec21101959dfa08aad3162a523634 (patch) | |
| tree | 5f338cb0714dbe36988431320f8919576d91009a /libs/ui/Input.cpp | |
| parent | 13412d31650366f41b1f3d9f429cb0a01dd575ef (diff) | |
| parent | 8148cc3e47e50c916066e2fed562618b5827188f (diff) | |
am 8148cc3e: am 86ea1f5f: Initial checkin of spot presentation for touchpad gestures. (DO NOT MERGE)
* commit '8148cc3e47e50c916066e2fed562618b5827188f':
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 0a53d69bef45..684c332d11a7 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; |