diff options
| -rw-r--r-- | core/java/android/view/WindowManagerPolicy.java | 5 | ||||
| -rw-r--r-- | services/java/com/android/server/WindowManagerService.java | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java index 916fc2d..1ab46fc 100644 --- a/core/java/android/view/WindowManagerPolicy.java +++ b/core/java/android/view/WindowManagerPolicy.java @@ -868,4 +868,9 @@ public interface WindowManagerPolicy { * requesting this is no longer visible. */ public void screenOnStoppedLw(); + + /** + * Return false to disable key repeat events from being generated. + */ + public boolean allowKeyRepeat(); } diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index 9caa386..e743513 100644 --- a/services/java/com/android/server/WindowManagerService.java +++ b/services/java/com/android/server/WindowManagerService.java @@ -6227,6 +6227,13 @@ public class WindowManagerService extends IWindowManager.Stub lt.sample("2 got event ", System.nanoTime() - ev.whenNano); } + if (lastKey != null && !mPolicy.allowKeyRepeat()) { + // cancel key repeat at the request of the policy. + lastKey = null; + downTime = 0; + lastKeyTime = curTime; + nextKeyTime = curTime + LONG_WAIT; + } try { if (ev != null) { curTime = SystemClock.uptimeMillis(); |
