diff options
Diffstat (limited to 'core/java/android/view/ViewRootImpl.java')
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 7da31ebe4a17..170c78367643 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -1096,15 +1096,21 @@ public final class ViewRootImpl implements ViewParent, private void updateForceDarkMode() { if (mAttachInfo.mThreadedRenderer == null) return; - boolean nightMode = getNightMode() == Configuration.UI_MODE_NIGHT_YES; - TypedArray a = mContext.obtainStyledAttributes(R.styleable.Theme); - boolean isLightTheme = a.getBoolean(R.styleable.Theme_isLightTheme, false); - a.recycle(); + boolean useAutoDark = getNightMode() == Configuration.UI_MODE_NIGHT_YES; - boolean changed = mAttachInfo.mThreadedRenderer.setForceDark(nightMode); - changed |= mAttachInfo.mThreadedRenderer.getRootNode().setAllowForceDark(isLightTheme); + // Allow debug.hwui.force_dark to override the target SDK check + if (useAutoDark && !SystemProperties.getBoolean("debug.hwui.force_dark", false)) { + useAutoDark = mContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.Q; + } + + if (useAutoDark) { + TypedArray a = mContext.obtainStyledAttributes(R.styleable.Theme); + useAutoDark = a.getBoolean(R.styleable.Theme_isLightTheme, true) + && a.getBoolean(R.styleable.Theme_forceDarkAllowed, true); + a.recycle(); + } - if (changed) { + if (mAttachInfo.mThreadedRenderer.setForceDark(useAutoDark)) { // TODO: Don't require regenerating all display lists to apply this setting invalidateWorld(mView); } |
