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

Commit 0cd9a7ea authored by Adam Lesinski's avatar Adam Lesinski
Browse files

ResourcesManager: Fix a cache issue

Forgot to cache the creating of ResourcesImpl during an Activity
override config update.

Bug:27644297
Change-Id: I65d9086f6d32f5adc7231aa3a1797d4f00c4b9a9
parent becc3019
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -440,6 +440,11 @@ public class ResourcesManager {
                compatInfo);
        classLoader = classLoader != null ? classLoader : ClassLoader.getSystemClassLoader();

        if (DEBUG) {
            Slog.d(TAG, "createBaseActivityResources activity=" + activityToken
                    + " with key=" + key);
        }

        synchronized (this) {
            final ActivityResources activityResources = getOrCreateActivityResourcesStructLocked(
                    activityToken);
@@ -651,6 +656,16 @@ public class ResourcesManager {
                activityResources.overrideConfig.setToDefaults();
            }

            if (DEBUG) {
                Throwable here = new Throwable();
                here.fillInStackTrace();
                Slog.d(TAG, "updating resources override for activity=" + activityToken
                        + " from oldConfig=" + Configuration.resourceQualifierString(oldConfig)
                        + " to newConfig="
                        + Configuration.resourceQualifierString(activityResources.overrideConfig),
                        here);
            }

            final boolean activityHasOverrideConfig =
                    !activityResources.overrideConfig.equals(Configuration.EMPTY);

@@ -692,9 +707,15 @@ public class ResourcesManager {
                        oldKey.mOverlayDirs, oldKey.mLibDirs, oldKey.mDisplayId,
                        rebasedOverrideConfig, oldKey.mCompatInfo);

                if (DEBUG) {
                    Slog.d(TAG, "rebasing ref=" + resources + " from oldKey=" + oldKey
                            + " to newKey=" + newKey);
                }

                ResourcesImpl resourcesImpl = findResourcesImplForKeyLocked(newKey);
                if (resourcesImpl == null) {
                    resourcesImpl = createResourcesImpl(newKey);
                    mResourceImpls.put(newKey, new WeakReference<>(resourcesImpl));
                }

                if (resourcesImpl != resources.getImpl()) {