Adding a scaling threshold in ScreenMagnifier

Change-Id: I1fdd7c93de571a61d88d7386c5c2a423a6b83fb9
diff --git a/services/java/com/android/server/accessibility/ScreenMagnifier.java b/services/java/com/android/server/accessibility/ScreenMagnifier.java
index ffd4adb..48781ac 100644
--- a/services/java/com/android/server/accessibility/ScreenMagnifier.java
+++ b/services/java/com/android/server/accessibility/ScreenMagnifier.java
@@ -353,11 +353,13 @@
         private static final float MIN_SCALE = 1.3f;
         private static final float MAX_SCALE = 5.0f;
 
+        private static final float SCALING_THRESHOLD = 0.3f;
+
         private final ScaleGestureDetector mScaleGestureDetector;
         private final GestureDetector mGestureDetector;
 
-        private float mScaleFocusX = -1;
-        private float mScaleFocusY = -1;
+        private float mInitialScaleFactor = -1;
+        private boolean mScaling;
 
         public MagnifiedContentInteractonStateHandler(Context context) {
             mScaleGestureDetector = new ScaleGestureDetector(context, this);
@@ -405,8 +407,17 @@
 
         @Override
         public boolean onScale(ScaleGestureDetector detector) {
-            if (mCurrentState != STATE_MAGNIFIED_INTERACTION) {
-                return true;
+            if (!mScaling) {
+                if (mInitialScaleFactor < 0) {
+                    mInitialScaleFactor = detector.getScaleFactor();
+                } else {
+                    final float deltaScale = detector.getScaleFactor() - mInitialScaleFactor;
+                    if (Math.abs(deltaScale) > SCALING_THRESHOLD) {
+                        mScaling = true;
+                        return true;
+                    }
+                }
+                return false;
             }
             final float newScale = mMagnificationController.getScale()
                     * detector.getScaleFactor();
@@ -414,12 +425,8 @@
             if (DEBUG_SCALING) {
                 Slog.i(LOG_TAG, "normalizedNewScale: " + normalizedNewScale);
             }
-            if (mScaleFocusX < 0 && mScaleFocusY < 0) {
-                mScaleFocusX = detector.getFocusX();
-                mScaleFocusY = detector.getFocusY();
-            }
-            mMagnificationController.setScale(normalizedNewScale, mScaleFocusX,
-                    mScaleFocusY, false);
+            mMagnificationController.setScale(normalizedNewScale, detector.getFocusX(),
+                    detector.getFocusY(), false);
             return true;
         }
 
@@ -434,8 +441,8 @@
         }
 
         private void clear() {
-            mScaleFocusX = -1;
-            mScaleFocusY = -1;
+            mInitialScaleFactor = -1;
+            mScaling = false;
         }
     }