diff options
Diffstat (limited to 'libs/hwui/RenderNode.cpp')
-rw-r--r-- | libs/hwui/RenderNode.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp index a2e1f6041b62..d5afb2011429 100644 --- a/libs/hwui/RenderNode.cpp +++ b/libs/hwui/RenderNode.cpp @@ -272,6 +272,20 @@ void RenderNode::syncDisplayList(TreeObserver& observer, TreeInfo* info) { mStagingDisplayList = nullptr; if (mDisplayList) { mDisplayList->syncContents(); + if (CC_UNLIKELY(Properties::forceDarkMode)) { + auto usage = usageHint(); + if (usage == UsageHint::Unknown) { + if (mDisplayList->mChildNodes.size() > 1) { + usage = UsageHint::Background; + } else if (mDisplayList->mChildNodes.size() == 1 && + mDisplayList->mChildNodes.front().getRenderNode()->usageHint() != + UsageHint::Background) { + usage = UsageHint::Background; + } + } + mDisplayList->mDisplayList.applyColorTransform( + usage == UsageHint::Background ? ColorTransform::Dark : ColorTransform::Light); + } } } |