diff options
author | Svetoslav Ganov <svetoslavganov@google.com> | 2012-06-03 12:38:57 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-06-03 12:38:57 -0700 |
commit | 778fa81f5da05dcc45260caa70c97971bdccf8bb (patch) | |
tree | c3705193841a5e3b1a2384f97cbf6dee08fb3862 | |
parent | a764816b1ae961218bd7c628ab9f0ad384eab8cd (diff) | |
parent | ebac1b79c4a355d8cd73b49df059deb00d7aa256 (diff) | |
download | frameworks_base-778fa81f5da05dcc45260caa70c97971bdccf8bb.zip frameworks_base-778fa81f5da05dcc45260caa70c97971bdccf8bb.tar.gz frameworks_base-778fa81f5da05dcc45260caa70c97971bdccf8bb.tar.bz2 |
Merge "Fixing a crash in the TouchExplorer." into jb-dev
-rw-r--r-- | services/java/com/android/server/accessibility/TouchExplorer.java | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/services/java/com/android/server/accessibility/TouchExplorer.java b/services/java/com/android/server/accessibility/TouchExplorer.java index 67bdabd..d97b022 100644 --- a/services/java/com/android/server/accessibility/TouchExplorer.java +++ b/services/java/com/android/server/accessibility/TouchExplorer.java @@ -327,9 +327,10 @@ public class TouchExplorer { if (mSendHoverEnterDelayed.isPending()) { mSendHoverEnterDelayed.remove(); mSendHoverExitDelayed.remove(); - mPerformLongPressDelayed.remove(); } + mPerformLongPressDelayed.remove(); + // If we have the first tap schedule a long press and break // since we do not want to schedule hover enter because // the delayed callback will kick in before the long click. @@ -396,6 +397,7 @@ public class TouchExplorer { // exploring so start sending events. mSendHoverEnterDelayed.forceSendAndRemove(); mSendHoverExitDelayed.remove(); + mPerformLongPressDelayed.remove(); sendMotionEvent(event, MotionEvent.ACTION_HOVER_MOVE, pointerIdBits, policyFlags); } @@ -422,6 +424,7 @@ public class TouchExplorer { mSendHoverExitDelayed.remove(); mPerformLongPressDelayed.remove(); } else { + mPerformLongPressDelayed.remove(); // If the user is touch exploring the second pointer may be // performing a double tap to activate an item without need // for the user to lift his exploring finger. @@ -446,9 +449,6 @@ public class TouchExplorer { if (isDraggingGesture(event)) { // Two pointers moving in the same direction within // a given distance perform a drag. - mSendHoverEnterDelayed.remove(); - mSendHoverExitDelayed.remove(); - mPerformLongPressDelayed.remove(); mCurrentState = STATE_DRAGGING; mDraggingPointerId = pointerId; sendMotionEvent(event, MotionEvent.ACTION_DOWN, pointerIdBits, @@ -469,6 +469,7 @@ public class TouchExplorer { mSendHoverExitDelayed.remove(); mPerformLongPressDelayed.remove(); } else { + mPerformLongPressDelayed.remove(); // We are sending events so send exit and gesture // end since we transition to another state. sendExitEventsIfNeeded(policyFlags); @@ -1247,6 +1248,11 @@ public class TouchExplorer { @Override public void run() { + // Active pointers should not be zero when running this command. + if (mReceivedPointerTracker.getActivePointerCount() == 0) { + return; + } + // If the last touched explored location is not within the focused // window we will long press at that exact spot, otherwise we find the // accessibility focus and if the tap is within its bounds we long press |