Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d44364fe authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 20306

* changes:
  Fix crash when MotionEvent is initialized with more than 2 fingers, and bump its initial size to allow for up to 5 fingers.
parents d87c19f7 1e8dfc73
Loading
Loading
Loading
Loading
+19 −3
Original line number Diff line number Diff line
@@ -185,7 +185,12 @@ public final class MotionEvent implements Parcelable {
     */
    static public final int NUM_SAMPLE_DATA = 4;
    
    static private final int BASE_AVAIL_POINTERS = 2;
    /**
     * Number of possible pointers.
     * @hide
     */
    static public final int BASE_AVAIL_POINTERS = 5;
    
    static private final int BASE_AVAIL_SAMPLES = 8;
    
    static private final int MAX_RECYCLED = 10;
@@ -290,8 +295,19 @@ public final class MotionEvent implements Parcelable {
        ev.mNumPointers = pointers;
        ev.mNumSamples = 1;
        
        System.arraycopy(inPointerIds, 0, ev.mPointerIdentifiers, 0, pointers);
        System.arraycopy(inData, 0, ev.mDataSamples, 0, pointers * NUM_SAMPLE_DATA);
        int[] pointerIdentifiers = ev.mPointerIdentifiers;
        if (pointerIdentifiers.length < pointers) {
            ev.mPointerIdentifiers = pointerIdentifiers = new int[pointers];
        }
        System.arraycopy(inPointerIds, 0, pointerIdentifiers, 0, pointers);
        
        final int ND = pointers * NUM_SAMPLE_DATA;
        float[] dataSamples = ev.mDataSamples;
        if (dataSamples.length < ND) {
            ev.mDataSamples = dataSamples = new float[ND];
        }
        System.arraycopy(inData, 0, dataSamples, 0, ND);
        
        ev.mTimeSamples[0] = eventTime;

        if (DEBUG_POINTERS) {