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)
This commit is contained in:
commit
01fdb1bb41
@ -608,6 +608,11 @@ private:
|
||||
// Oldest sample to consider when calculating the velocity.
|
||||
static const nsecs_t MAX_AGE = 200 * 1000000; // 200 ms
|
||||
|
||||
// When the total duration of the window of samples being averaged is less
|
||||
// than the window size, the resulting velocity is scaled to reduce the impact
|
||||
// of overestimation in short traces.
|
||||
static const nsecs_t MIN_WINDOW = 100 * 1000000; // 100 ms
|
||||
|
||||
// The minimum duration between samples when estimating velocity.
|
||||
static const nsecs_t MIN_DURATION = 10 * 1000000; // 10 ms
|
||||
|
||||
|
@ -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;
|
||||
|
@ -662,7 +662,8 @@ void Looper::wakeAndLock() {
|
||||
#endif
|
||||
|
||||
void Looper::sendMessage(const sp<MessageHandler>& handler, const Message& message) {
|
||||
sendMessageAtTime(LLONG_MIN, handler, message);
|
||||
nsecs_t now = systemTime(SYSTEM_TIME_MONOTONIC);
|
||||
sendMessageAtTime(now, handler, message);
|
||||
}
|
||||
|
||||
void Looper::sendMessageDelayed(nsecs_t uptimeDelay, const sp<MessageHandler>& handler,
|
||||
|
Loading…
Reference in New Issue
Block a user