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

Commit 7eecfccb authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Enable overlays that are pending creation

They don't exist yet, but enabling them won't make OverlayManager fail,
creation will be exectured on the same transaction.

Test: manual
Fixes: 194155751
Change-Id: I388f382592dfd1aa4db5bfa047b9cfcb4d489e78
parent 144dab97
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -197,8 +197,10 @@ public class ThemeOverlayApplier implements Dumpable {
                    .collect(Collectors.toList());

            OverlayManagerTransaction.Builder transaction = getTransactionBuilder();
            HashSet<OverlayIdentifier> identifiersPending = new HashSet<>();
            if (pendingCreation != null) {
                for (FabricatedOverlay overlay : pendingCreation) {
                    identifiersPending.add(overlay.getIdentifier());
                    transaction.registerFabricatedOverlay(overlay);
                }
            }
@@ -206,14 +208,14 @@ public class ThemeOverlayApplier implements Dumpable {
            for (Pair<String, String> packageToDisable : overlaysToDisable) {
                OverlayIdentifier overlayInfo = new OverlayIdentifier(packageToDisable.second);
                setEnabled(transaction, overlayInfo, packageToDisable.first, currentUser,
                        managedProfiles, false);
                        managedProfiles, false, identifiersPending.contains(overlayInfo));
            }

            for (String category : THEME_CATEGORIES) {
                if (categoryToPackage.containsKey(category)) {
                    OverlayIdentifier overlayInfo = categoryToPackage.get(category);
                    setEnabled(transaction, overlayInfo, category, currentUser, managedProfiles,
                            true);
                            true, identifiersPending.contains(overlayInfo));
                }
            }

@@ -233,7 +235,7 @@ public class ThemeOverlayApplier implements Dumpable {
    @AnyThread
    private void setEnabled(OverlayManagerTransaction.Builder transaction,
            OverlayIdentifier identifier, String category, int currentUser,
            Set<UserHandle> managedProfiles, boolean enabled) {
            Set<UserHandle> managedProfiles, boolean enabled, boolean pendingCreation) {
        if (DEBUG) {
            Log.d(TAG, "setEnabled: " + identifier.getPackageName() + " category: "
                    + category + ": " + enabled);
@@ -241,7 +243,7 @@ public class ThemeOverlayApplier implements Dumpable {

        OverlayInfo overlayInfo = mOverlayManager.getOverlayInfo(identifier,
                UserHandle.of(currentUser));
        if (overlayInfo == null) {
        if (overlayInfo == null && !pendingCreation) {
            Log.i(TAG, "Won't enable " + identifier + ", it doesn't exist for user"
                    + currentUser);
            return;