diff options
author | Svetoslav Ganov <svetoslavganov@google.com> | 2012-09-07 16:27:01 -0700 |
---|---|---|
committer | Svetoslav Ganov <svetoslavganov@google.com> | 2012-09-07 17:33:09 -0700 |
commit | 2cee686498c6141f5a68532ecb79f598e043ec7e (patch) | |
tree | 5baa7c1f49b0e1a6162a8d5ee7453cad43d4ac58 /services/java/com/android/server/accessibility/ScreenMagnifier.java | |
parent | 970683c5d42a1d8588d656d4e570ce4f0f6e0abc (diff) | |
download | frameworks_base-2cee686498c6141f5a68532ecb79f598e043ec7e.zip frameworks_base-2cee686498c6141f5a68532ecb79f598e043ec7e.tar.gz frameworks_base-2cee686498c6141f5a68532ecb79f598e043ec7e.tar.bz2 |
Fixing off by one error in the ScreenMagnifier.
Change-Id: Ia0ccfb6b354b7a18633e7cf26647c6436ebf5c08
Diffstat (limited to 'services/java/com/android/server/accessibility/ScreenMagnifier.java')
-rw-r--r-- | services/java/com/android/server/accessibility/ScreenMagnifier.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/services/java/com/android/server/accessibility/ScreenMagnifier.java b/services/java/com/android/server/accessibility/ScreenMagnifier.java index bd7f276..78092dd 100644 --- a/services/java/com/android/server/accessibility/ScreenMagnifier.java +++ b/services/java/com/android/server/accessibility/ScreenMagnifier.java @@ -286,7 +286,11 @@ public final class ScreenMagnifier implements EventStreamTransformation { private PointerCoords[] getTempPointerCoordsWithMinSize(int size) { final int oldSize = (mTempPointerCoords != null) ? mTempPointerCoords.length : 0; if (oldSize < size) { + PointerCoords[] oldTempPointerCoords = mTempPointerCoords; mTempPointerCoords = new PointerCoords[size]; + if (oldTempPointerCoords != null) { + System.arraycopy(oldTempPointerCoords, 0, mTempPointerCoords, 0, oldSize); + } } for (int i = oldSize; i < size; i++) { mTempPointerCoords[i] = new PointerCoords(); @@ -297,7 +301,11 @@ public final class ScreenMagnifier implements EventStreamTransformation { private PointerProperties[] getTempPointerPropertiesWithMinSize(int size) { final int oldSize = (mTempPointerProperties != null) ? mTempPointerProperties.length : 0; if (oldSize < size) { + PointerProperties[] oldTempPointerProperties = mTempPointerProperties; mTempPointerProperties = new PointerProperties[size]; + if (oldTempPointerProperties != null) { + System.arraycopy(oldTempPointerProperties, 0, mTempPointerProperties, 0, oldSize); + } } for (int i = oldSize; i < size; i++) { mTempPointerProperties[i] = new PointerProperties(); @@ -324,7 +332,7 @@ public final class ScreenMagnifier implements EventStreamTransformation { Slog.i(LOG_TAG, "mCurrentState: STATE_PANNING"); } break; case STATE_DECIDE_PAN_OR_SCALE: { - Slog.i(LOG_TAG, "mCurrentState: STATE_DETECTING_PAN_OR_SCALE"); + Slog.i(LOG_TAG, "mCurrentState: STATE_DECIDE_PAN_OR_SCALE"); } break; default: { throw new IllegalArgumentException("Unknown state: " + state); @@ -397,6 +405,7 @@ public final class ScreenMagnifier implements EventStreamTransformation { } if (scaleDelta > DETECT_SCALING_THRESHOLD) { performScale(detector, true); + clear(); transitionToState(STATE_SCALING); return false; } @@ -409,8 +418,9 @@ public final class ScreenMagnifier implements EventStreamTransformation { Slog.i(LOG_TAG, "panDelta: " + panDelta); } if (panDelta > mScaledDetectPanningThreshold) { - transitionToState(STATE_PANNING); performPan(detector, true); + clear(); + transitionToState(STATE_PANNING); return false; } } break; |