summaryrefslogtreecommitdiff
path: root/libs/hwui/RenderNode.cpp
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2018-08-15 10:17:12 -0700
committerJohn Reck <jreck@google.com>2018-08-29 13:53:36 -0700
commit8f45d4afd95e73fab931722038fb411ab3f1603d (patch)
treef4bfbe131830757a25a56952c04ff9838c8053af /libs/hwui/RenderNode.cpp
parent0ce807abd5216010a085db207ef7799d3e7f549c (diff)
New DisplayList v2
First step of many * Pulls SkLiteDL and SkLiteRecorder into HWUI * forceDark shifted to be a sync-time transformation instead of record time. No meaningful behavior change, but much more flexible heuristics are possible this way. Test: build, poked around with forceDark on Change-Id: I7b7cec5b7fd7c2b18823b4d92d821cf5898f9b88
Diffstat (limited to 'libs/hwui/RenderNode.cpp')
-rw-r--r--libs/hwui/RenderNode.cpp14
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);
+ }
}
}