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

Commit c57064f9 authored by Ryan Mitchell's avatar Ryan Mitchell
Browse files

Do not rebase Resources with non RM impls

If a Resources object associated with an Activity has its underlying
ResourcesImpl changed to an impl that did not originate from
ResourcesManager, do attempt to propagate configuration change events
to the Resources object.

Bug: 148196042
Test: manual
Change-Id: I58cc03ae50f082f75e9ed181e0f0401f5890910b
parent cb2d2ec7
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -961,19 +961,21 @@ public class ResourcesManager {
                // Rebase each Resources associated with this Activity.
                final int refCount = activityResources.activityResources.size();
                for (int i = 0; i < refCount; i++) {
                    WeakReference<Resources> weakResRef = activityResources.activityResources.get(
                            i);
                    final WeakReference<Resources> weakResRef =
                            activityResources.activityResources.get(i);

                    Resources resources = weakResRef.get();
                    final Resources resources = weakResRef.get();
                    if (resources == null) {
                        continue;
                    }

                    ResourcesKey newKey = rebaseActivityOverrideConfig(resources, oldConfig,
                    final ResourcesKey newKey = rebaseActivityOverrideConfig(resources, oldConfig,
                            overrideConfig, displayId);
                    if (newKey != null) {
                        updateActivityResources(resources, newKey, false);
                    }
                }
            }
        } finally {
            Trace.traceEnd(Trace.TRACE_TAG_RESOURCES);
        }
@@ -983,8 +985,9 @@ public class ResourcesManager {
     * Rebases an updated override config over any old override config and returns the new one
     * that an Activity's Resources should be set to.
     */
    private ResourcesKey rebaseActivityOverrideConfig(Resources resources,
            Configuration oldOverrideConfig, @Nullable Configuration newOverrideConfig,
    @Nullable
    private ResourcesKey rebaseActivityOverrideConfig(@NonNull Resources resources,
            @NonNull Configuration oldOverrideConfig, @Nullable Configuration newOverrideConfig,
            int displayId) {
        // Extract the ResourcesKey that was last used to create the Resources for this
        // activity.