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

Commit 82a948db authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Prevent recycling if the color mapping changed." into sc-v2-dev am:...

Merge "Prevent recycling if the color mapping changed." into sc-v2-dev am: 33bb0ba3 am: 858baa8c

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

Change-Id: I4906ff59c5758808504179f67aecd79cfb9255df
parents ab4abf13 858baa8c
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -97,7 +97,8 @@ public class AppWidgetHostView extends FrameLayout {
    AppWidgetProviderInfo mInfo;
    View mView;
    int mViewMode = VIEW_MODE_NOINIT;
    int mLayoutId = -1;
    // If true, we should not try to re-apply the RemoteViews on the next inflation.
    boolean mColorMappingChanged = false;
    private InteractionHandler mInteractionHandler;
    private boolean mOnLightBackground;
    private SizeF mCurrentSize = null;
@@ -540,7 +541,6 @@ public class AppWidgetHostView extends FrameLayout {
                return;
            }
            content = getDefaultView();
            mLayoutId = -1;
            mViewMode = VIEW_MODE_DEFAULT;
        } else {
            // Select the remote view we are actually going to apply.
@@ -557,8 +557,7 @@ public class AppWidgetHostView extends FrameLayout {
            // inflate any requested LayoutParams.
            mRemoteContext = getRemoteContextEnsuringCorrectCachedApkPath();

            int layoutId = rvToApply.getLayoutId();
            if (rvToApply.canRecycleView(mView)) {
            if (!mColorMappingChanged && rvToApply.canRecycleView(mView)) {
                try {
                    rvToApply.reapply(mContext, mView, mInteractionHandler, mCurrentSize,
                            mColorResources);
@@ -583,7 +582,6 @@ public class AppWidgetHostView extends FrameLayout {
                }
            }

            mLayoutId = layoutId;
            mViewMode = VIEW_MODE_CONTENT;
        }

@@ -591,6 +589,7 @@ public class AppWidgetHostView extends FrameLayout {
    }

    private void applyContent(View content, boolean recycled, Exception exception) {
        mColorMappingChanged = false;
        if (content == null) {
            if (mViewMode == VIEW_MODE_ERROR) {
                // We've already done this -- nothing to do.
@@ -626,7 +625,7 @@ public class AppWidgetHostView extends FrameLayout {

        // If our stale view has been prepared to match active, and the new
        // layout matches, try recycling it
        if (remoteViews.canRecycleView(mView)) {
        if (!mColorMappingChanged && remoteViews.canRecycleView(mView)) {
            try {
                mLastExecutionSignal = remoteViews.reapplyAsync(mContext,
                        mView,
@@ -666,7 +665,6 @@ public class AppWidgetHostView extends FrameLayout {

        @Override
        public void onViewApplied(View v) {
            AppWidgetHostView.this.mLayoutId = mLayoutId;
            mViewMode = VIEW_MODE_CONTENT;

            applyContent(v, mIsReapply, null);
@@ -907,7 +905,7 @@ public class AppWidgetHostView extends FrameLayout {
        }
        mColorMapping = colorMapping.clone();
        mColorResources = RemoteViews.ColorResources.create(mContext, mColorMapping);
        mLayoutId = -1;
        mColorMappingChanged = true;
        mViewMode = VIEW_MODE_NOINIT;
        reapplyLastRemoteViews();
    }
@@ -937,7 +935,7 @@ public class AppWidgetHostView extends FrameLayout {
        if (mColorResources != null) {
            mColorResources = null;
            mColorMapping = null;
            mLayoutId = -1;
            mColorMappingChanged = true;
            mViewMode = VIEW_MODE_NOINIT;
            reapplyLastRemoteViews();
        }