summaryrefslogtreecommitdiff
path: root/libs/ui/Input.cpp
diff options
context:
space:
mode:
author Jeff Brown <jeffbrown@google.com> 2011-05-25 14:43:34 -0700
committer Android Git Automerger <android-git-automerger@android.com> 2011-05-25 14:43:34 -0700
commit01fdb1bb41dbdfa8366f4d957ef09ba1a8c4a8bb (patch)
treeb2e51ea79ac3fb83fa91c0e9906817eacbd203cb /libs/ui/Input.cpp
parent12e858f392a9feaf24afc7b19753b71b8c559b21 (diff)
parentd3e6d3e763544511a870b354f657600d25c42b91 (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.cpp9
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;