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

Commit f4bbb87b authored by Andrii Kulian's avatar Andrii Kulian Committed by android-build-merger
Browse files

Make sure to apply latest configuration to resources am: 3b3c914e

am: 466b790f

Change-Id: If78e2eb11c4558924835f37d7e89420b86e38e96
parents a3c30c37 466b790f
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -4632,11 +4632,12 @@ public final class ActivityThread {
        if ((activity == null) || (activity.mCurrentConfig == null)) {
            shouldChangeConfig = true;
        } else {
            // If the new config is the same as the config this Activity
            // is already running with then don't bother calling
            // onConfigurationChanged
            // If the new config is the same as the config this Activity is already
            // running with and the override config also didn't change, then don't
            // bother calling onConfigurationChanged.
            int diff = activity.mCurrentConfig.diff(newConfig);
            if (diff != 0) {
            if (diff != 0 || !mResourcesManager.isSameResourcesOverrideConfig(activityToken,
                    amOverrideConfig)) {
                // Always send the task-level config changes. For system-level configuration, if
                // this activity doesn't handle any of the config changes, then don't bother
                // calling onConfigurationChanged as we're going to destroy it.
+20 −0
Original line number Diff line number Diff line
@@ -364,6 +364,26 @@ public class ResourcesManager {
        return null;
    }

    /**
     * Check if activity resources have same override config as the provided on.
     * @param activityToken The Activity that resources should be associated with.
     * @param overrideConfig The override configuration to be checked for equality with.
     * @return true if activity resources override config matches the provided one or they are both
     *         null, false otherwise.
     */
    boolean isSameResourcesOverrideConfig(@Nullable IBinder activityToken,
            @Nullable Configuration overrideConfig) {
        synchronized (this) {
            final ActivityResources activityResources
                    = activityToken != null ? mActivityResourceReferences.get(activityToken) : null;
            if (activityResources == null) {
                return overrideConfig == null;
            } else {
                return Objects.equals(activityResources.overrideConfig, overrideConfig);
            }
        }
    }

    private ActivityResources getOrCreateActivityResourcesStructLocked(
            @NonNull IBinder activityToken) {
        ActivityResources activityResources = mActivityResourceReferences.get(activityToken);