diff options
author | Maciej Białka <maciej.bialka@sonyericsson.com> | 2010-03-05 08:40:09 +0100 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2010-07-19 15:12:20 -0700 |
commit | 26824b7a9e4f5fe5c3b7e0576320f58fd035b100 (patch) | |
tree | c68afdd59d0b09c36d854232c32dff5a75f309e3 | |
parent | 45988040454b710c20abf5fda74cdafb874a28bf (diff) | |
download | frameworks_base-26824b7a9e4f5fe5c3b7e0576320f58fd035b100.zip frameworks_base-26824b7a9e4f5fe5c3b7e0576320f58fd035b100.tar.gz frameworks_base-26824b7a9e4f5fe5c3b7e0576320f58fd035b100.tar.bz2 |
Remove the window from being a target for motion events when it is destroyed.
If window was destroyed when touch was pressed this destroyed
window was still considered as a target for motion events.
In some cases this could result with hang up inside event dispatch procedure.
Change-Id: I2ede17a40b14b2f509ab3d2560abb65292324f45
-rw-r--r-- | services/java/com/android/server/WindowManagerService.java | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index 88463b0..68787cd 100644 --- a/services/java/com/android/server/WindowManagerService.java +++ b/services/java/com/android/server/WindowManagerService.java @@ -2149,6 +2149,7 @@ public class WindowManagerService extends IWindowManager.Stub private void removeWindowInnerLocked(Session session, WindowState win) { mKeyWaiter.finishedKey(session, win.mClient, true, KeyWaiter.RETURN_NOTHING); + mKeyWaiter.releaseMotionTarget(win); mKeyWaiter.releasePendingPointerLocked(win.mSession); mKeyWaiter.releasePendingTrackballLocked(win.mSession); @@ -6120,6 +6121,12 @@ public class WindowManagerService extends IWindowManager.Stub } } + void releaseMotionTarget(WindowState win) { + if (mMotionTarget == win) { + mMotionTarget = null; + } + } + MotionEvent finishedKey(Session session, IWindow client, boolean force, int returnWhat) { if (DEBUG_INPUT) Slog.v( |