summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/accessibility/ScreenMagnifier.java
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2012-09-07 16:27:01 -0700
committerSvetoslav Ganov <svetoslavganov@google.com>2012-09-07 17:33:09 -0700
commit2cee686498c6141f5a68532ecb79f598e043ec7e (patch)
tree5baa7c1f49b0e1a6162a8d5ee7453cad43d4ac58 /services/java/com/android/server/accessibility/ScreenMagnifier.java
parent970683c5d42a1d8588d656d4e570ce4f0f6e0abc (diff)
downloadframeworks_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.java14
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;