diff options
author | Jeff Brown <jeffbrown@google.com> | 2010-07-28 15:48:59 -0700 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2010-07-29 12:54:27 -0700 |
commit | 6ec402b5ae33c8927694d8522b4cc6a5c8ba974e (patch) | |
tree | 5d4b19eda9ade71d7e34635479426f1dd484e8c2 /core/java/android/view/KeyEvent.java | |
parent | 6dea6f4e71b53e421564d783c227cbe0a2469183 (diff) | |
download | frameworks_base-6ec402b5ae33c8927694d8522b4cc6a5c8ba974e.zip frameworks_base-6ec402b5ae33c8927694d8522b4cc6a5c8ba974e.tar.gz frameworks_base-6ec402b5ae33c8927694d8522b4cc6a5c8ba974e.tar.bz2 |
DO NOT MERGE: Fix input event injection ANRs on UI thread.
Added a new asynchronous injection mode and made the existing
synchronization mechanism more robust.
Change-Id: Ia4aa04fd9b75ea2461a844c5b7933c831c1027e6
Diffstat (limited to 'core/java/android/view/KeyEvent.java')
-rwxr-xr-x | core/java/android/view/KeyEvent.java | 42 |
1 files changed, 23 insertions, 19 deletions
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java index dd0d21a..9223e17 100755 --- a/core/java/android/view/KeyEvent.java +++ b/core/java/android/view/KeyEvent.java @@ -1211,44 +1211,48 @@ public class KeyEvent extends InputEvent implements Parcelable { public static final Parcelable.Creator<KeyEvent> CREATOR = new Parcelable.Creator<KeyEvent>() { public KeyEvent createFromParcel(Parcel in) { - return new KeyEvent(in); + in.readInt(); // skip token, we already know this is a KeyEvent + return KeyEvent.createFromParcelBody(in); } public KeyEvent[] newArray(int size) { return new KeyEvent[size]; } }; - - public int describeContents() { - return 0; + + /** @hide */ + public static KeyEvent createFromParcelBody(Parcel in) { + return new KeyEvent(in); + } + + private KeyEvent(Parcel in) { + readBaseFromParcel(in); + + mAction = in.readInt(); + mKeyCode = in.readInt(); + mRepeatCount = in.readInt(); + mMetaState = in.readInt(); + mScanCode = in.readInt(); + mFlags = in.readInt(); + mDownTime = in.readLong(); + mEventTime = in.readLong(); } public void writeToParcel(Parcel out, int flags) { + out.writeInt(PARCEL_TOKEN_KEY_EVENT); + + writeBaseToParcel(out); + out.writeInt(mAction); out.writeInt(mKeyCode); out.writeInt(mRepeatCount); out.writeInt(mMetaState); - out.writeInt(mDeviceId); - out.writeInt(mSource); out.writeInt(mScanCode); out.writeInt(mFlags); out.writeLong(mDownTime); out.writeLong(mEventTime); } - private KeyEvent(Parcel in) { - mAction = in.readInt(); - mKeyCode = in.readInt(); - mRepeatCount = in.readInt(); - mMetaState = in.readInt(); - mDeviceId = in.readInt(); - mSource = in.readInt(); - mScanCode = in.readInt(); - mFlags = in.readInt(); - mDownTime = in.readLong(); - mEventTime = in.readLong(); - } - private native boolean native_isSystemKey(int keyCode); private native boolean native_hasDefaultAction(int keyCode); } |