diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2010-05-12 12:44:27 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-05-12 12:44:27 -0700 |
commit | 63ece47fecdb5932de9af5cfec4cf998764e6e0a (patch) | |
tree | b42abf928fc8a10b25e319651348ae0ae2ecf41a /services | |
parent | 55bef14f153c1a80006de2ff86bcf67984a6e1a8 (diff) | |
parent | 2a9ae01f74e7273ce0d1045754597ea78b88ba69 (diff) | |
download | frameworks_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.java | 35 |
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: |