summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2010-05-12 12:44:27 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-05-12 12:44:27 -0700
commit63ece47fecdb5932de9af5cfec4cf998764e6e0a (patch)
treeb42abf928fc8a10b25e319651348ae0ae2ecf41a /services
parent55bef14f153c1a80006de2ff86bcf67984a6e1a8 (diff)
parent2a9ae01f74e7273ce0d1045754597ea78b88ba69 (diff)
downloadframeworks_base-63ece47fecdb5932de9af5cfec4cf998764e6e0a.zip
frameworks_base-63ece47fecdb5932de9af5cfec4cf998764e6e0a.tar.gz
frameworks_base-63ece47fecdb5932de9af5cfec4cf998764e6e0a.tar.bz2
am 2a9ae01f: merge from open-source master
Merge commit '2a9ae01f74e7273ce0d1045754597ea78b88ba69' into kraken * commit '2a9ae01f74e7273ce0d1045754597ea78b88ba69': Corrected repeat count for key repeat in input device.
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/WindowManagerService.java35
1 files changed, 26 insertions, 9 deletions
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index ecd8b83..a1c08fd 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -6530,18 +6530,30 @@ public class WindowManagerService extends IWindowManager.Stub
case RawInputEvent.CLASS_KEYBOARD:
KeyEvent ke = (KeyEvent)ev.event;
if (ke.isDown()) {
- lastKey = ke;
- downTime = curTime;
- keyRepeatCount = 0;
lastKeyTime = curTime;
- nextKeyTime = lastKeyTime
- + ViewConfiguration.getLongPressTimeout();
- if (DEBUG_INPUT) Slog.v(
- TAG, "Received key down: first repeat @ "
- + nextKeyTime);
+ if (lastKey != null &&
+ ke.getKeyCode() == lastKey.getKeyCode()) {
+ keyRepeatCount++;
+ // Arbitrary long timeout to block
+ // repeating here since we know that
+ // the device driver takes care of it.
+ nextKeyTime = lastKeyTime + LONG_WAIT;
+ if (DEBUG_INPUT) Slog.v(
+ TAG, "Received repeated key down");
+ } else {
+ downTime = curTime;
+ keyRepeatCount = 0;
+ nextKeyTime = lastKeyTime
+ + ViewConfiguration.getLongPressTimeout();
+ if (DEBUG_INPUT) Slog.v(
+ TAG, "Received key down: first repeat @ "
+ + nextKeyTime);
+ }
+ lastKey = ke;
} else {
lastKey = null;
downTime = 0;
+ keyRepeatCount = 0;
// Arbitrary long timeout.
lastKeyTime = curTime;
nextKeyTime = curTime + LONG_WAIT;
@@ -6549,7 +6561,12 @@ public class WindowManagerService extends IWindowManager.Stub
TAG, "Received key up: ignore repeat @ "
+ nextKeyTime);
}
- dispatchKey((KeyEvent)ev.event, 0, 0);
+ if (keyRepeatCount > 0) {
+ dispatchKey(KeyEvent.changeTimeRepeat(ke,
+ ke.getEventTime(), keyRepeatCount), 0, 0);
+ } else {
+ dispatchKey(ke, 0, 0);
+ }
mQueue.recycleEvent(ev);
break;
case RawInputEvent.CLASS_TOUCHSCREEN: