Merge "Respect ACTION_CANCEL for joystick fallbacks"
This commit is contained in:
committed by
Android (Google) Code Review
commit
5da8ca9189
@@ -3372,11 +3372,11 @@ public final class MotionEvent extends InputEvent implements Parcelable {
|
||||
throw new IllegalArgumentException("Axis out of range.");
|
||||
}
|
||||
final long bits = mPackedAxisBits;
|
||||
final long axisBit = 1L << axis;
|
||||
final long axisBit = 0x8000000000000000L >>> axis;
|
||||
if ((bits & axisBit) == 0) {
|
||||
return 0;
|
||||
}
|
||||
final int index = Long.bitCount(bits & (axisBit - 1L));
|
||||
final int index = Long.bitCount(bits & ~(0xFFFFFFFFFFFFFFFFL >>> axis));
|
||||
return mPackedAxisValues[index];
|
||||
}
|
||||
}
|
||||
@@ -3425,8 +3425,8 @@ public final class MotionEvent extends InputEvent implements Parcelable {
|
||||
throw new IllegalArgumentException("Axis out of range.");
|
||||
}
|
||||
final long bits = mPackedAxisBits;
|
||||
final long axisBit = 1L << axis;
|
||||
final int index = Long.bitCount(bits & (axisBit - 1L));
|
||||
final long axisBit = 0x8000000000000000L >>> axis;
|
||||
final int index = Long.bitCount(bits & ~(0xFFFFFFFFFFFFFFFFL >>> axis));
|
||||
float[] values = mPackedAxisValues;
|
||||
if ((bits & axisBit) == 0) {
|
||||
if (values == null) {
|
||||
|
||||
@@ -4309,6 +4309,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;
|
||||
|
||||
@@ -4341,10 +4342,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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user