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

Commit ca754db2 authored by Tyler Freeman's avatar Tyler Freeman Committed by Android (Google) Code Review
Browse files

Merge "fix(force invert): listen for changes to force invert setting" into main

parents 3e9b389d c3aeb052
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
@@ -123,6 +123,7 @@ import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.database.ContentObserver;
import android.graphics.BLASTBufferQueue;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -392,6 +393,9 @@ public final class ViewRootImpl implements ViewParent,
     */
    private CompatOnBackInvokedCallback mCompatOnBackInvokedCallback;

    @Nullable
    private ContentObserver mForceInvertObserver;

    /**
     * Callback for notifying about global configuration changes.
     */
@@ -1597,6 +1601,24 @@ public final class ViewRootImpl implements ViewParent,
                        | DisplayManager.EVENT_FLAG_DISPLAY_CHANGED
                        | DisplayManager.EVENT_FLAG_DISPLAY_REMOVED,
                        mBasePackageName);

        if (forceInvertColor()) {
            if (mForceInvertObserver == null) {
                mForceInvertObserver = new ContentObserver(mHandler) {
                    @Override
                    public void onChange(boolean selfChange) {
                        updateForceDarkMode();
                    }
                };
                mContext.getContentResolver().registerContentObserver(
                        Settings.Secure.getUriFor(
                                Settings.Secure.ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED
                        ),
                        false,
                        mForceInvertObserver,
                        UserHandle.myUserId());
            }
        }
    }

    /**
@@ -1610,6 +1632,14 @@ public final class ViewRootImpl implements ViewParent,
        DisplayManagerGlobal
                .getInstance()
                .unregisterDisplayListener(mDisplayListener);

        if (forceInvertColor()) {
            if (mForceInvertObserver != null) {
                mContext.getContentResolver().unregisterContentObserver(mForceInvertObserver);
                mForceInvertObserver = null;
            }
        }

        if (mExtraDisplayListenerLogging) {
            Slog.w(mTag, "Unregister listeners: " + mBasePackageName, new Throwable());
        }