diff options
| author | 2012-04-20 14:57:11 -0700 | |
|---|---|---|
| committer | 2012-04-20 14:57:18 -0700 | |
| commit | 8e2f41426ce162a164d1074dd67ea4549ffd0711 (patch) | |
| tree | cfd14751bbb59f10389bc8673d02be0dfab6f13a | |
| parent | 5778626d9b3aa2d81dc8bbe3139547ad90b90f25 (diff) | |
Fixes in the accessibility gesture dispatching.
1. The gesture dispatcher thread was not waiting in a loop
that check for complete initialization. Therefore is was
susceptible to missed signals and unexpected interrupts.
2. In the gesture processing message handle the interaction id
was reading the wrong message argument.
bug:5932640
Change-Id: Ic65ecc01a7fe7d43929c6c07d0759ae9001cf515
| -rw-r--r-- | services/java/com/android/server/accessibility/AccessibilityManagerService.java | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java index 8215dcff6bf7..86efd17223cd 100644 --- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -1007,10 +1007,12 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub synchronized (mGestureLock) { Thread worker = new Thread(this, THREAD_NAME); worker.start(); - try { - mGestureLock.wait(); - } catch (InterruptedException ie) { - /* ignore */ + while (mHandler == null) { + try { + mGestureLock.wait(); + } catch (InterruptedException ie) { + /* ignore */ + } } } } @@ -1044,7 +1046,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub IAccessibilityServiceClient service = (IAccessibilityServiceClient) message.obj; final int gestureId = message.arg1; - final int interactionId = message.arg1; + final int interactionId = message.arg2; try { service.onGesture(gestureId, this, interactionId); |