From 9ea77fc821918ea562ff4907945b865e39e0201a Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Wed, 21 Mar 2012 19:49:27 -0700 Subject: [PATCH] Avoid calling into JNI if not needed. Short-circuit a few MotionEvent JNI calls in simple cases. Change-Id: I6c97c06b5a5fd203a423dc88f428637b9dec71ae --- core/java/android/view/MotionEvent.java | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java index 92e8f4e14b889..77fd8d29d415a 100644 --- a/core/java/android/view/MotionEvent.java +++ b/core/java/android/view/MotionEvent.java @@ -1654,14 +1654,22 @@ public final class MotionEvent extends InputEvent implements Parcelable { } } } - + /** - * Scales down the coordination of this event by the given scale. + * Applies a scale factor to all points within this event. * + * This method is used to adjust touch events to simulate different density + * displays for compatibility mode. The values returned by {@link #getRawX()}, + * {@link #getRawY()}, {@link #getXPrecision()} and {@link #getYPrecision()} + * are also affected by the scale factor. + * + * @param scale The scale factor to apply. * @hide */ public final void scale(float scale) { - nativeScale(mNativePtr, scale); + if (scale != 1.0f) { + nativeScale(mNativePtr, scale); + } } /** {@inheritDoc} */ @@ -2631,7 +2639,9 @@ public final class MotionEvent extends InputEvent implements Parcelable { * @param deltaY Amount to add to the current Y coordinate of the event. */ public final void offsetLocation(float deltaX, float deltaY) { - nativeOffsetLocation(mNativePtr, deltaX, deltaY); + if (deltaX != 0.0f || deltaY != 0.0f) { + nativeOffsetLocation(mNativePtr, deltaX, deltaY); + } } /** @@ -2644,7 +2654,7 @@ public final class MotionEvent extends InputEvent implements Parcelable { public final void setLocation(float x, float y) { float oldX = getX(); float oldY = getY(); - nativeOffsetLocation(mNativePtr, x - oldX, y - oldY); + offsetLocation(x - oldX, y - oldY); } /**