summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-06-14 21:09:07 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-06-14 21:09:07 -0700
commit9d2b0f4de03ca9bcdab5a3608dea5474c91faf86 (patch)
treeb4939d3d7ad50029c2b37e1d3b7e06a559535248
parent3c69d554e78fc894ab5b04fc6837899635a83167 (diff)
parentcafdea61a85c8f5d0646cc9413a09346c637f43f (diff)
downloadframeworks_base-9d2b0f4de03ca9bcdab5a3608dea5474c91faf86.zip
frameworks_base-9d2b0f4de03ca9bcdab5a3608dea5474c91faf86.tar.gz
frameworks_base-9d2b0f4de03ca9bcdab5a3608dea5474c91faf86.tar.bz2
merge cafdea61a85c8f5d0646cc9413a09346c637f43f w/ one minor conflict in core/java/android/view/MotionEvent.java
-rw-r--r--core/java/android/view/MotionEvent.java141
-rw-r--r--core/java/android/view/ViewGroup.java3
2 files changed, 77 insertions, 67 deletions
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index f1bf0f4..69c6a7c 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -58,32 +58,32 @@ public final class MotionEvent implements Parcelable {
public static final int ACTION_OUTSIDE = 4;
private static final boolean TRACK_RECYCLED_LOCATION = false;
-
+
/**
* Flag indicating the motion event intersected the top edge of the screen.
*/
public static final int EDGE_TOP = 0x00000001;
-
+
/**
* Flag indicating the motion event intersected the bottom edge of the screen.
*/
public static final int EDGE_BOTTOM = 0x00000002;
-
+
/**
* Flag indicating the motion event intersected the left edge of the screen.
*/
public static final int EDGE_LEFT = 0x00000004;
-
+
/**
* Flag indicating the motion event intersected the right edge of the screen.
*/
public static final int EDGE_RIGHT = 0x00000008;
-
+
static private final int MAX_RECYCLED = 10;
static private Object gRecyclerLock = new Object();
static private int gRecyclerUsed = 0;
static private MotionEvent gRecyclerTop = null;
-
+
private long mDownTime;
private long mEventTime;
private long mEventTimeNano;
@@ -109,7 +109,7 @@ public final class MotionEvent implements Parcelable {
private MotionEvent() {
}
-
+
static private MotionEvent obtain() {
synchronized (gRecyclerLock) {
if (gRecyclerTop == null) {
@@ -183,22 +183,22 @@ public final class MotionEvent implements Parcelable {
/**
* Create a new MotionEvent, filling in all of the basic values that
* define the motion.
- *
- * @param downTime The time (in ms) when the user originally pressed down to start
+ *
+ * @param downTime The time (in ms) when the user originally pressed down to start
* a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}.
- * @param eventTime The the time (in ms) when this specific event was generated. This
+ * @param eventTime The the time (in ms) when this specific event was generated. This
* must be obtained from {@link SystemClock#uptimeMillis()}.
* @param action The kind of action being performed -- one of either
* {@link #ACTION_DOWN}, {@link #ACTION_MOVE}, {@link #ACTION_UP}, or
* {@link #ACTION_CANCEL}.
* @param x The X coordinate of this event.
* @param y The Y coordinate of this event.
- * @param pressure The current pressure of this event. The pressure generally
- * ranges from 0 (no pressure at all) to 1 (normal pressure), however
- * values higher than 1 may be generated depending on the calibration of
+ * @param pressure The current pressure of this event. The pressure generally
+ * ranges from 0 (no pressure at all) to 1 (normal pressure), however
+ * values higher than 1 may be generated depending on the calibration of
* the input device.
* @param size A scaled value of the approximate size of the area being pressed when
- * touched with the finger. The actual value in pixels corresponding to the finger
+ * touched with the finger. The actual value in pixels corresponding to the finger
* touch is normalized with a device specific range of values
* and scaled to a value between 0 and 1.
* @param metaState The state of any meta / modifier keys that were in effect when
@@ -231,15 +231,15 @@ public final class MotionEvent implements Parcelable {
return ev;
}
-
+
/**
* Create a new MotionEvent, filling in a subset of the basic motion
* values. Those not specified here are: device id (always 0), pressure
* and size (always 1), x and y precision (always 1), and edgeFlags (always 0).
- *
- * @param downTime The time (in ms) when the user originally pressed down to start
+ *
+ * @param downTime The time (in ms) when the user originally pressed down to start
* a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}.
- * @param eventTime The the time (in ms) when this specific event was generated. This
+ * @param eventTime The the time (in ms) when this specific event was generated. This
* must be obtained from {@link SystemClock#uptimeMillis()}.
* @param action The kind of action being performed -- one of either
* {@link #ACTION_DOWN}, {@link #ACTION_MOVE}, {@link #ACTION_UP}, or
@@ -287,9 +287,10 @@ public final class MotionEvent implements Parcelable {
float[] history = mHistory;
int length = history.length;
for (int i = 0; i < length; i += 4) {
- history[i] *= scale;
- history[i + 2] *= scale;
- history[i + 3] *= scale;
+ history[i] *= scale; // X
+ // history[i + 2] == pressure
+ history[i + 1] *= scale; // Y
+ history[i + 3] *= scale; // Size, TODO: square this?
}
}
}
@@ -324,7 +325,7 @@ public final class MotionEvent implements Parcelable {
}
return ev;
}
-
+
/**
* Recycle the MotionEvent, to be re-used by a later caller. After calling
* this function you must not ever touch the event again.
@@ -350,7 +351,7 @@ public final class MotionEvent implements Parcelable {
}
}
}
-
+
/**
* Return the kind of action being performed -- one of either
* {@link #ACTION_DOWN}, {@link #ACTION_MOVE}, {@link #ACTION_UP}, or
@@ -361,8 +362,8 @@ public final class MotionEvent implements Parcelable {
}
/**
- * Returns the time (in ms) when the user originally pressed down to start
- * a stream of position events.
+ * Returns the time (in ms) when the user originally pressed down to start
+ * a stream of position events.
*/
public final long getDownTime() {
return mDownTime;
@@ -376,6 +377,7 @@ public final class MotionEvent implements Parcelable {
}
/**
+<<<<<<< HEAD:core/java/android/view/MotionEvent.java
* Returns the time (in ns) when this specific event was generated.
* The value is in nanosecond precision but it may not have nanosecond accuracy.
*
@@ -388,23 +390,30 @@ public final class MotionEvent implements Parcelable {
/**
* Returns the X coordinate of this event. Whole numbers are pixels; the
* value may have a fraction for input devices that are sub-pixel precise.
+|||||||
+ * Returns the X coordinate of this event. Whole numbers are pixels; the
+ * value may have a fraction for input devices that are sub-pixel precise.
+=======
+ * Returns the X coordinate of this event. Whole numbers are pixels; the
+ * value may have a fraction for input devices that are sub-pixel precise.
+>>>>>>> cafdea61a85c8f5d0646cc9413a09346c637f43f:core/java/android/view/MotionEvent.java
*/
public final float getX() {
return mX;
}
/**
- * Returns the Y coordinate of this event. Whole numbers are pixels; the
- * value may have a fraction for input devices that are sub-pixel precise.
+ * Returns the Y coordinate of this event. Whole numbers are pixels; the
+ * value may have a fraction for input devices that are sub-pixel precise.
*/
public final float getY() {
return mY;
}
/**
- * Returns the current pressure of this event. The pressure generally
- * ranges from 0 (no pressure at all) to 1 (normal pressure), however
- * values higher than 1 may be generated depending on the calibration of
+ * Returns the current pressure of this event. The pressure generally
+ * ranges from 0 (no pressure at all) to 1 (normal pressure), however
+ * values higher than 1 may be generated depending on the calibration of
* the input device.
*/
public final float getPressure() {
@@ -413,9 +422,9 @@ public final class MotionEvent implements Parcelable {
/**
* Returns a scaled value of the approximate size, of the area being pressed when
- * touched with the finger. The actual value in pixels corresponding to the finger
+ * touched with the finger. The actual value in pixels corresponding to the finger
* touch is normalized with the device specific range of values
- * and scaled to a value between 0 and 1. The value of size can be used to
+ * and scaled to a value between 0 and 1. The value of size can be used to
* determine fat touch events.
*/
public final float getSize() {
@@ -465,7 +474,7 @@ public final class MotionEvent implements Parcelable {
public final float getXPrecision() {
return mXPrecision;
}
-
+
/**
* Return the precision of the Y coordinates being reported. You can
* multiple this number with {@link #getY} to find the actual hardware
@@ -475,89 +484,89 @@ public final class MotionEvent implements Parcelable {
public final float getYPrecision() {
return mYPrecision;
}
-
+
/**
* Returns the number of historical points in this event. These are
* movements that have occurred between this event and the previous event.
* This only applies to ACTION_MOVE events -- all other actions will have
* a size of 0.
- *
+ *
* @return Returns the number of historical points in the event.
*/
public final int getHistorySize() {
return mNumHistory;
}
-
+
/**
* Returns the time that a historical movement occurred between this event
* and the previous event. Only applies to ACTION_MOVE events.
- *
+ *
* @param pos Which historical value to return; must be less than
* {@link #getHistorySize}
- *
+ *
* @see #getHistorySize
* @see #getEventTime
*/
public final long getHistoricalEventTime(int pos) {
return mHistoryTimes[pos];
}
-
+
/**
* Returns a historical X coordinate that occurred between this event
* and the previous event. Only applies to ACTION_MOVE events.
- *
+ *
* @param pos Which historical value to return; must be less than
* {@link #getHistorySize}
- *
+ *
* @see #getHistorySize
* @see #getX
*/
public final float getHistoricalX(int pos) {
return mHistory[pos*4];
}
-
+
/**
* Returns a historical Y coordinate that occurred between this event
* and the previous event. Only applies to ACTION_MOVE events.
- *
+ *
* @param pos Which historical value to return; must be less than
* {@link #getHistorySize}
- *
+ *
* @see #getHistorySize
* @see #getY
*/
public final float getHistoricalY(int pos) {
return mHistory[pos*4 + 1];
}
-
+
/**
* Returns a historical pressure coordinate that occurred between this event
* and the previous event. Only applies to ACTION_MOVE events.
- *
+ *
* @param pos Which historical value to return; must be less than
* {@link #getHistorySize}
- *
+ *
* @see #getHistorySize
* @see #getPressure
*/
public final float getHistoricalPressure(int pos) {
return mHistory[pos*4 + 2];
}
-
+
/**
* Returns a historical size coordinate that occurred between this event
* and the previous event. Only applies to ACTION_MOVE events.
- *
+ *
* @param pos Which historical value to return; must be less than
* {@link #getHistorySize}
- *
+ *
* @see #getHistorySize
* @see #getSize
*/
public final float getHistoricalSize(int pos) {
return mHistory[pos*4 + 3];
}
-
+
/**
* Return the id for the device that this event came from. An id of
* zero indicates that the event didn't come from a physical device; other
@@ -566,12 +575,12 @@ public final class MotionEvent implements Parcelable {
public final int getDeviceId() {
return mDeviceId;
}
-
+
/**
* Returns a bitfield indicating which edges, if any, where touched by this
- * MotionEvent. For touch events, clients can use this to determine if the
- * user's finger was touching the edge of the display.
- *
+ * MotionEvent. For touch events, clients can use this to determine if the
+ * user's finger was touching the edge of the display.
+ *
* @see #EDGE_LEFT
* @see #EDGE_TOP
* @see #EDGE_RIGHT
@@ -580,12 +589,12 @@ public final class MotionEvent implements Parcelable {
public final int getEdgeFlags() {
return mEdgeFlags;
}
-
+
/**
* Sets the bitfield indicating which edges, if any, where touched by this
- * MotionEvent.
- *
+ * MotionEvent.
+ *
* @see #getEdgeFlags()
*/
public final void setEdgeFlags(int flags) {
@@ -617,11 +626,11 @@ public final class MotionEvent implements Parcelable {
pos[i+1] += deltaY;
}
}
-
+
/**
* Set this event's location. Applies {@link #offsetLocation} with a
* delta from the current location to the given new location.
- *
+ *
* @param x New absolute X location.
* @param y New absolute Y location.
*/
@@ -632,13 +641,13 @@ public final class MotionEvent implements Parcelable {
offsetLocation(deltaX, deltaY);
}
}
-
+
/**
* Add a new movement to the batch of movements in this event. The event's
* current location, position and size is updated to the new values. In
* the future, the current values in the event will be added to a list of
* historic values.
- *
+ *
* @param x The new X position.
* @param y The new Y position.
* @param pressure The new pressure.
@@ -668,16 +677,16 @@ public final class MotionEvent implements Parcelable {
mHistoryTimes = historyTimes = newHistoryTimes;
}
}
-
+
historyTimes[N] = mEventTime;
-
+
final int pos = N*4;
history[pos] = mX;
history[pos+1] = mY;
history[pos+2] = mPressure;
history[pos+3] = mSize;
mNumHistory = N+1;
-
+
mEventTime = eventTime;
mX = mRawX = x;
mY = mRawY = y;
@@ -685,7 +694,7 @@ public final class MotionEvent implements Parcelable {
mSize = size;
mMetaState |= metaState;
}
-
+
@Override
public String toString() {
return "MotionEvent{" + Integer.toHexString(System.identityHashCode(this))
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index af05501..f803b5a 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -1449,7 +1449,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
if ((flags & FLAG_CHILDREN_DRAWN_WITH_CACHE) == FLAG_CHILDREN_DRAWN_WITH_CACHE ||
(flags & FLAG_ALWAYS_DRAWN_WITH_CACHE) == FLAG_ALWAYS_DRAWN_WITH_CACHE) {
cache = child.getDrawingCache();
- scalingRequired = mAttachInfo.mScalingRequired;
+ if (mAttachInfo != null) scalingRequired = mAttachInfo.mScalingRequired;
}
final boolean hasNoCache = cache == null;
@@ -1460,6 +1460,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
} else {
canvas.translate(cl, ct);
if (scalingRequired) {
+ // mAttachInfo cannot be null, otherwise scalingRequired == false
final float scale = 1.0f / mAttachInfo.mApplicationScale;
canvas.scale(scale, scale);
}