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

Commit 1c8c4010 authored by Ryan Mitchell's avatar Ryan Mitchell
Browse files

RRO: Don't update overlays when target changes

When packages or components are enabled/disabled, PackageManager
broadcasts ACTION_PACKAGE_CHANGED. Currently, overlay paths are being
updated whenever this action is recieved, but this is cauing black
screen flashes because the active apps are having their overlay paths
reconfigured.

This change makes it so only overlays becoming enabled or disabled cause
the overlay paths to be updated.

Bug: 78508043
Test: Tested Instagram, adding a fingerprint, and adding a new user and
observed no screen flashes.

Change-Id: I3168f4a1e7187c8c1659fb169bae841783b7279f
parent 5b66df1a
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -389,11 +389,16 @@ public final class OverlayManagerService extends SystemService {
                    final PackageInfo pi = mPackageManager.getPackageInfo(packageName, userId,
                            false);
                    if (pi != null) {
                        /*
                         * Only update overlay settings when an overlay becomes enabled or disabled.
                         * Enabling or disabling components of a target should not change the
                         * target's overlays. Since, overlays do not have components, this will only
                         * update overlay settings if an overlay package becomes enabled or
                         * disabled.
                         */
                        mPackageManager.cachePackageInfo(packageName, userId, pi);
                        if (pi.isOverlayPackage()) {
                            mImpl.onOverlayPackageChanged(packageName, userId);
                        } else {
                            mImpl.onTargetPackageChanged(packageName, userId);
                        }
                    }
                }
+0 −10
Original line number Diff line number Diff line
@@ -212,16 +212,6 @@ final class OverlayManagerServiceImpl {
        }
    }

    void onTargetPackageChanged(@NonNull final String packageName, final int userId) {
        if (DEBUG) {
            Slog.d(TAG, "onTargetPackageChanged packageName=" + packageName + " userId=" + userId);
        }

        if (updateAllOverlaysForTarget(packageName, userId, 0)) {
            mListener.onOverlaysChanged(packageName, userId);
        }
    }

    void onTargetPackageUpgrading(@NonNull final String packageName, final int userId) {
        if (DEBUG) {
            Slog.d(TAG, "onTargetPackageUpgrading packageName=" + packageName + " userId="