am 6b44ae6e: am 311fc0b3: Fixed a crash that could occur in the ObservableScrollView

* commit '6b44ae6e921ec6030274b96e88c6e5746c74d6c2':
  Fixed a crash that could occur in the ObservableScrollView
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ObservableScrollView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ObservableScrollView.java
index b842a6b..1186a33 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ObservableScrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ObservableScrollView.java
@@ -34,6 +34,7 @@
     private float mLastX;
     private float mLastY;
     private boolean mBlockFlinging;
+    private boolean mTouchCancelled;
 
     public ObservableScrollView(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -87,9 +88,20 @@
 
     @Override
     public boolean dispatchTouchEvent(MotionEvent ev) {
-        boolean isEndGuesture = (ev.getAction() == MotionEvent.ACTION_UP
-                || ev.getAction() == MotionEvent.ACTION_CANCEL);
-        if (!mTouchEnabled && !isEndGuesture) {
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+            if (!mTouchEnabled) {
+                mTouchCancelled = true;
+                return false;
+            }
+            mTouchCancelled = false;
+        } else if (mTouchCancelled) {
+            return false;
+        } else if (!mTouchEnabled) {
+            MotionEvent cancel = MotionEvent.obtain(ev);
+            cancel.setAction(MotionEvent.ACTION_CANCEL);
+            super.dispatchTouchEvent(ev);
+            cancel.recycle();
+            mTouchCancelled = true;
             return false;
         }
         return super.dispatchTouchEvent(ev);