diff options
author | Jeff Brown <jeffbrown@google.com> | 2010-08-18 15:51:08 -0700 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2010-08-18 16:58:27 -0700 |
commit | 542412c8c96ee369e7bdc197a79a2d37c7f8e020 (patch) | |
tree | acf403ff949f6f4e2dbafe15e2078988ba8fcd3a /include | |
parent | 3b746459454833f327355e286cb84da0d70f0f1d (diff) | |
download | frameworks_native-542412c8c96ee369e7bdc197a79a2d37c7f8e020.zip frameworks_native-542412c8c96ee369e7bdc197a79a2d37c7f8e020.tar.gz frameworks_native-542412c8c96ee369e7bdc197a79a2d37c7f8e020.tar.bz2 |
Add support for throttling motion events.
Change-Id: I24b3a17753e91ecda60a60fe5cd2e6b3260e033d
Diffstat (limited to 'include')
-rw-r--r-- | include/ui/InputDispatcher.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/include/ui/InputDispatcher.h b/include/ui/InputDispatcher.h index 2505cb0..aed4fa1 100644 --- a/include/ui/InputDispatcher.h +++ b/include/ui/InputDispatcher.h @@ -159,6 +159,12 @@ public: virtual int32_t waitForMotionEventTargets(MotionEvent* motionEvent, uint32_t policyFlags, int32_t injectorPid, int32_t injectorUid, Vector<InputTarget>& outTargets) = 0; + + /* Gets the maximum suggested event delivery rate per second. + * This value is used to throttle motion event movement actions on a per-device + * basis. It is not intended to be a hard limit. + */ + virtual int32_t getMaxEventsPerSecond() = 0; }; @@ -332,6 +338,8 @@ private: // Linked list of motion samples associated with this motion event. MotionSample firstSample; MotionSample* lastSample; + + uint32_t countSamples() const; }; // Tracks the progress of dispatching a particular event to a particular connection. @@ -587,6 +595,17 @@ private: Condition mInjectionSyncFinishedCondition; void decrementPendingSyncDispatchesLocked(EventEntry* entry); + // Throttling state. + struct ThrottleState { + nsecs_t minTimeBetweenEvents; + + nsecs_t lastEventTime; + int32_t lastDeviceId; + uint32_t lastSource; + + uint32_t originalSampleCount; // only collected during debugging + } mThrottleState; + // Key repeat tracking. // XXX Move this up to the input reader instead. struct KeyRepeatState { |