summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2012-06-03 12:38:57 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-06-03 12:38:57 -0700
commit778fa81f5da05dcc45260caa70c97971bdccf8bb (patch)
treec3705193841a5e3b1a2384f97cbf6dee08fb3862
parenta764816b1ae961218bd7c628ab9f0ad384eab8cd (diff)
parentebac1b79c4a355d8cd73b49df059deb00d7aa256 (diff)
downloadframeworks_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.java14
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