Skip to content

Commit 25fc232

Browse files
idoybhaswin7469
authored andcommitted
base: Allow disabling color inversion support [1/2]
Via an overlay Some kernels won't support that no more Also make sure it's never enabled, even if the setting is set to true Change-Id: Ia443eddca8d901f404433e3af96a25a91269f4f0 Signed-off-by: aswin7469 <aswinas@pixysos.com>
1 parent b3eb07c commit 25fc232

6 files changed

Lines changed: 33 additions & 6 deletions

File tree

core/res/res/values/pixys_config.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,4 +223,6 @@
223223
<!-- The list of package IDs that are allowed to skip camera high frame rate checks. -->
224224
<string-array name="config_cameraHFRPrivAppList" translatable="false" />
225225

226+
<!-- Display color inversion availability -->
227+
<bool name="config_displayInversionAvailable">true</bool>
226228
</resources>

core/res/res/values/pixys_symbols.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,6 @@
118118
<!-- Camera -->
119119
<java-symbol type="array" name="config_cameraHFRPrivAppList" />
120120

121+
<!-- Display color inversion availability -->
122+
<java-symbol type="bool" name="config_displayInversionAvailable" />
121123
</resources>

packages/SystemUI/src/com/android/systemui/ScreenDecorations.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -598,7 +598,10 @@ private void setupDecorationsInner() {
598598
removeHwcOverlay();
599599
}
600600

601-
if (hasOverlays() || hasHwcOverlay()) {
601+
final boolean available = mContext.getResources().getBoolean(
602+
com.android.internal.R.bool.config_displayInversionAvailable);
603+
if (!available) return;
604+
if ((hasOverlays() || hasHwcOverlay())) {
602605
if (mIsRegistered) {
603606
return;
604607
}

packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,12 @@ protected void handleUpdateState(BooleanState state, Object arg) {
130130
state.contentDescription = state.label;
131131
}
132132

133+
@Override
134+
public boolean isAvailable() {
135+
return mContext.getResources().getBoolean(
136+
com.android.internal.R.bool.config_displayInversionAvailable);
137+
}
138+
133139
@Override
134140
public int getMetricsCategory() {
135141
return MetricsEvent.QS_COLORINVERSION;

services/core/java/com/android/server/display/color/ColorDisplayService.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -384,8 +384,10 @@ public void onChange(boolean selfChange, Uri uri) {
384384
false /* notifyForDescendants */, mContentObserver, mCurrentUser);
385385
cr.registerContentObserver(System.getUriFor(System.DISPLAY_COLOR_MODE),
386386
false /* notifyForDescendants */, mContentObserver, mCurrentUser);
387-
cr.registerContentObserver(Secure.getUriFor(Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED),
388-
false /* notifyForDescendants */, mContentObserver, mCurrentUser);
387+
if (isAccessibilityInversionAvailable()) {
388+
cr.registerContentObserver(Secure.getUriFor(Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED),
389+
false /* notifyForDescendants */, mContentObserver, mCurrentUser);
390+
}
389391
cr.registerContentObserver(
390392
Secure.getUriFor(Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED),
391393
false /* notifyForDescendants */, mContentObserver, mCurrentUser);
@@ -583,7 +585,13 @@ private boolean isAccessiblityDaltonizerEnabled() {
583585

584586
private boolean isAccessiblityInversionEnabled() {
585587
return Secure.getIntForUser(getContext().getContentResolver(),
586-
Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, 0, mCurrentUser) != 0;
588+
Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, 0, mCurrentUser) != 0
589+
&& isAccessibilityInversionAvailable();
590+
}
591+
592+
private boolean isAccessibilityInversionAvailable() {
593+
return getContext().getResources().getBoolean(
594+
com.android.internal.R.bool.config_displayInversionAvailable);
587595
}
588596

589597
private boolean isAccessibilityEnabled() {

services/core/java/com/android/server/wm/WindowManagerService.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -821,8 +821,14 @@ final class SettingsObserver extends ContentObserver {
821821
public SettingsObserver() {
822822
super(new Handler());
823823
ContentResolver resolver = mContext.getContentResolver();
824-
resolver.registerContentObserver(mDisplayInversionEnabledUri, false, this,
825-
UserHandle.USER_ALL);
824+
825+
final boolean displayInversionAvailable = mContext.getResources().getBoolean(
826+
com.android.internal.R.bool.config_displayInversionAvailable);
827+
if (displayInversionAvailable) {
828+
resolver.registerContentObserver(mDisplayInversionEnabledUri, false, this,
829+
UserHandle.USER_ALL);
830+
}
831+
826832
resolver.registerContentObserver(mWindowAnimationScaleUri, false, this,
827833
UserHandle.USER_ALL);
828834
resolver.registerContentObserver(mTransitionAnimationScaleUri, false, this,

0 commit comments

Comments
 (0)