diff options
author | John Reck <jreck@google.com> | 2018-09-21 14:30:19 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2018-09-24 09:34:18 -0700 |
commit | 1423e1331fa8b97d36950d143560a332b6c6bed7 (patch) | |
tree | 5c6b076f9a93eb2cc22601a2fe13a0eb1d473304 /libs/hwui/RenderNode.cpp | |
parent | 4603406afe2667b1eac5b07bc21d3b44443a9e9a (diff) |
Create plumbing for disabling force-dark
Test: sysui's rounded corners are no longer white
Bug: 102591313
Change-Id: Id99ae38c354cef06b94a5fb79b5b1a9a216a514c
Diffstat (limited to 'libs/hwui/RenderNode.cpp')
-rw-r--r-- | libs/hwui/RenderNode.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp index 26e5cea2452a..9cfaa6a881ae 100644 --- a/libs/hwui/RenderNode.cpp +++ b/libs/hwui/RenderNode.cpp @@ -112,7 +112,9 @@ void RenderNode::prepareTree(TreeInfo& info) { LOG_ALWAYS_FATAL_IF(!info.damageAccumulator, "DamageAccumulator missing"); MarkAndSweepRemoved observer(&info); + const int before = info.disableForceDark; prepareTreeImpl(observer, info, false); + LOG_ALWAYS_FATAL_IF(before != info.disableForceDark, "Mis-matched force dark"); } void RenderNode::addAnimator(const sp<BaseRenderNodeAnimator>& animator) { @@ -195,6 +197,11 @@ void RenderNode::prepareTreeImpl(TreeObserver& observer, TreeInfo& info, bool fu if (info.mode == TreeInfo::MODE_FULL) { pushStagingPropertiesChanges(info); } + + if (!mProperties.getAllowForceDark()) { + info.disableForceDark++; + } + uint32_t animatorDirtyMask = 0; if (CC_LIKELY(info.runAnimations)) { animatorDirtyMask = mAnimatorManager.animate(info); @@ -232,6 +239,9 @@ void RenderNode::prepareTreeImpl(TreeObserver& observer, TreeInfo& info, bool fu } pushLayerUpdate(info); + if (!mProperties.getAllowForceDark()) { + info.disableForceDark--; + } info.damageAccumulator->popTransform(); } @@ -273,7 +283,7 @@ void RenderNode::syncDisplayList(TreeObserver& observer, TreeInfo* info) { if (mDisplayList) { mDisplayList->syncContents(); - if (CC_UNLIKELY(Properties::forceDarkMode)) { + if (CC_UNLIKELY(info && !info->disableForceDark)) { auto usage = usageHint(); if (mDisplayList->hasText()) { usage = UsageHint::Foreground; |