summaryrefslogtreecommitdiffstats
path: root/libs
diff options
context:
space:
mode:
authorJeff Brown <jeffbrown@google.com>2010-11-01 20:35:46 -0700
committerJeff Brown <jeffbrown@google.com>2010-11-01 20:51:58 -0700
commitf6149c3229529ed2ea1334e6bab6e1df2c86a4ba (patch)
treefd8455c16d6f6756c2381d0d885deb955c87f63c /libs
parent6a91efdb8794bb7318aa486479aea1a7638dba32 (diff)
downloadframeworks_native-f6149c3229529ed2ea1334e6bab6e1df2c86a4ba.zip
frameworks_native-f6149c3229529ed2ea1334e6bab6e1df2c86a4ba.tar.gz
frameworks_native-f6149c3229529ed2ea1334e6bab6e1df2c86a4ba.tar.bz2
Fix bugs related to cheek event suppression.
Two issues: 1. First, due to an inverted conditional in the input dispatcher, we were reporting touches as long touches and vice-versa to the power manager. 2. Power manager user activity cheek event suppression also suppresses touch events (but not long touch or up events). As a result, if cheek event suppression was enabled, touches would not poke the user activity timer. However due to the above logic inversion, this actually affected long touches. Net result, if cheek suppression was enabled in the power manager and you held your thumb on the screen long enough, the phone would go to sleep! Cheek event suppression is commonly turned on when making a phone call. Interestingly, it does not seem to get turned off afterward... This change fixes the logic inversion and exempts touches from the cheek suppression. The reason we do the latter is because the old behavior was actually harmful in other ways too: a touch down would be suppressed but not a long touch or the touch up. This would cause bizarre behavior if you touched the screen while it was dimmed. Instead of brightening immediately, it would brighten either when you lifted your finger or 300ms later, whichever came first. Bug: 3154895 Change-Id: Ied9ccec6718fbe86506322ff47a4e3eb58f81834
Diffstat (limited to 'libs')
-rw-r--r--libs/ui/InputDispatcher.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/libs/ui/InputDispatcher.cpp b/libs/ui/InputDispatcher.cpp
index ae81d26..c0b27fe 100644
--- a/libs/ui/InputDispatcher.cpp
+++ b/libs/ui/InputDispatcher.cpp
@@ -51,8 +51,8 @@
namespace android {
-// Delay between reporting long touch events to the power manager.
-const nsecs_t EVENT_IGNORE_DURATION = 300 * 1000000LL; // 300 ms
+// Delay before reporting long touch events to the power manager.
+const nsecs_t LONG_TOUCH_DELAY = 300 * 1000000LL; // 300 ms
// Default input dispatching timeout if there is no focused application or paused window
// from which to determine an appropriate dispatching timeout.
@@ -1416,7 +1416,7 @@ void InputDispatcher::pokeUserActivityLocked(const EventEntry* eventEntry) {
eventType = POWER_MANAGER_TOUCH_UP_EVENT;
break;
default:
- if (motionEntry->eventTime - motionEntry->downTime >= EVENT_IGNORE_DURATION) {
+ if (motionEntry->eventTime - motionEntry->downTime < LONG_TOUCH_DELAY) {
eventType = POWER_MANAGER_TOUCH_EVENT;
} else {
eventType = POWER_MANAGER_LONG_TOUCH_EVENT;