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

Commit 4a70bc72 authored by Chet Haase's avatar Chet Haase Committed by Android Git Automerger
Browse files

am 26511012: Merge "Clear animations in DisplayLists when done" into jb-dev

* commit '26511012':
  Clear animations in DisplayLists when done
parents 30b013bf 26511012
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -131,7 +131,8 @@ class GLES20DisplayList extends DisplayList {
    @Override
    public void setAnimationMatrix(Matrix matrix) {
        try {
            nSetAnimationMatrix(getNativeDisplayList(), matrix.native_instance);
            nSetAnimationMatrix(getNativeDisplayList(),
                    (matrix != null) ? matrix.native_instance : 0);
        } catch (IllegalStateException e) {
            // invalid DisplayList okay: we'll set current values the next time we render to it
        }
+27 −9
Original line number Diff line number Diff line
@@ -2128,6 +2128,13 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
     */
    static final int ACCESSIBILITY_STATE_CHANGED = 0x00000080 << IMPORTANT_FOR_ACCESSIBILITY_SHIFT;
    /**
     * Flag indicating that view has an animation set on it. This is used to track whether an
     * animation is cleared between successive frames, in order to tell the associated
     * DisplayList to clear its animation matrix.
     */
    static final int VIEW_IS_ANIMATING_TRANSFORM = 0x10000000;
    /* End of masks for mPrivateFlags2 */
    static final int DRAG_MASK = DRAG_CAN_ACCEPT | DRAG_HOVERED;
@@ -12777,8 +12784,18 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
        if (a != null) {
            more = drawAnimation(parent, drawingTime, a, scalingRequired);
            concatMatrix = a.willChangeTransformationMatrix();
            if (concatMatrix) {
                mPrivateFlags2 |= VIEW_IS_ANIMATING_TRANSFORM;
            }
            transformToApply = parent.mChildTransformation;
        } else if (!useDisplayListProperties &&
        } else {
            if ((mPrivateFlags2 & VIEW_IS_ANIMATING_TRANSFORM) == VIEW_IS_ANIMATING_TRANSFORM &&
                    mDisplayList != null) {
                // No longer animating: clear out old animation matrix
                mDisplayList.setAnimationMatrix(null);
                mPrivateFlags2 &= ~VIEW_IS_ANIMATING_TRANSFORM;
            }
            if (!useDisplayListProperties &&
                    (flags & ViewGroup.FLAG_SUPPORT_STATIC_TRANSFORMATIONS) != 0) {
                final boolean hasTransform =
                        parent.getChildStaticTransformation(this, parent.mChildTransformation);
@@ -12789,6 +12806,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
                    concatMatrix = (transformType & Transformation.TYPE_MATRIX) != 0;
                }
            }
        }
        concatMatrix |= !childHasIdentityMatrix;