diff options
| author | Michael Wright <michaelwr@google.com> | 2014-03-19 11:51:26 -0700 |
|---|---|---|
| committer | Michael Wright <michaelwr@google.com> | 2014-03-26 14:56:07 -0700 |
| commit | 1b10869f39978a864cfcc4efc73aefc312d8ed79 (patch) | |
| tree | 2335d099d07547abf1c672bde9b51594bf4e8f1b /core/java/android/view/ViewRootImpl.java | |
| parent | 1e3c93975ee9c88284449406d49df2569f03f498 (diff) | |
| download | frameworks_base-1b10869f39978a864cfcc4efc73aefc312d8ed79.zip frameworks_base-1b10869f39978a864cfcc4efc73aefc312d8ed79.tar.gz frameworks_base-1b10869f39978a864cfcc4efc73aefc312d8ed79.tar.bz2 | |
Generate and respect ACTION_CANCEL for joystick fallbacks. DO NOT MERGE
Also change MotionEvent.PointerCoords bit packing and unpacking
methods to be consistent with BitSets which are now used on the
native PointerCoords object.
Bug: 11480300
Change-Id: Ib18c99b94ac555104c69eac526860aa501e89e03
Diffstat (limited to 'core/java/android/view/ViewRootImpl.java')
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index d779628..1848a8f 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -4319,6 +4319,7 @@ public final class ViewRootImpl implements ViewParent, * Creates dpad events from unhandled joystick movements. */ final class SyntheticJoystickHandler extends Handler { + private final static String TAG = "SyntheticJoystickHandler"; private final static int MSG_ENQUEUE_X_AXIS_KEY_REPEAT = 1; private final static int MSG_ENQUEUE_Y_AXIS_KEY_REPEAT = 2; @@ -4351,10 +4352,21 @@ public final class ViewRootImpl implements ViewParent, } public void process(MotionEvent event) { - update(event, true); + switch(event.getActionMasked()) { + case MotionEvent.ACTION_CANCEL: + cancel(event); + break; + case MotionEvent.ACTION_MOVE: + update(event, true); + break; + default: + Log.w(TAG, "Unexpected action: " + event.getActionMasked()); + } } - public void cancel(MotionEvent event) { + private void cancel(MotionEvent event) { + removeMessages(MSG_ENQUEUE_X_AXIS_KEY_REPEAT); + removeMessages(MSG_ENQUEUE_Y_AXIS_KEY_REPEAT); update(event, false); } |
