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

Commit 419bd64b authored by John Reck's avatar John Reck Committed by Automerger Merge Worker
Browse files

Merge "Fix a potential thread safety issue in VectorDrawable" into qt-dev am: 547df6be

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14880618

Change-Id: I9690abb966d3d972e35015de54fafc6577d43340
parents f39c2687 547df6be
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -348,15 +348,19 @@ public class VectorDrawable extends Drawable {
    private final Rect mTmpBounds = new Rect();

    public VectorDrawable() {
        this(new VectorDrawableState(null), null);
        this(null, null);
    }

    /**
     * The one constructor to rule them all. This is called by all public
     * constructors to set the state and initialize local properties.
     */
    private VectorDrawable(@NonNull VectorDrawableState state, @Nullable Resources res) {
        mVectorState = state;
    private VectorDrawable(@Nullable VectorDrawableState state, @Nullable Resources res) {
        // As the mutable, not-thread-safe native instance is stored in VectorDrawableState, we
        // need to always do a defensive copy even if mutate() isn't called. Otherwise
        // draw() being called on 2 different VectorDrawable instances could still hit the same
        // underlying native object.
        mVectorState = new VectorDrawableState(state);
        updateLocalState(res);
    }