diff options
author | John Reck <jreck@google.com> | 2018-08-15 10:17:12 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2018-08-29 13:53:36 -0700 |
commit | 8f45d4afd95e73fab931722038fb411ab3f1603d (patch) | |
tree | f4bfbe131830757a25a56952c04ff9838c8053af /libs/hwui/RenderNode.cpp | |
parent | 0ce807abd5216010a085db207ef7799d3e7f549c (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.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); + } } } |