diff options
| author | 2023-11-08 17:26:20 +0000 | |
|---|---|---|
| committer | 2023-11-08 17:26:20 +0000 | |
| commit | 898fd94fb8c571a623ca047fd4c0b2a0de62fa33 (patch) | |
| tree | 5c7b9949792a089fe8d5f001cf469fa799a3dd5d /libs/hwui/RenderNode.cpp | |
| parent | f527647494c2fdab2688a4b8265c3c3e25205b1e (diff) | |
| parent | 335677493d7cf19bf8bcbe9d61b902562c2c6b0a (diff) | |
Merge changes from topic "forcedark-ignoreoutoutrendernode" into main
* changes:
fix(force invert): don't let devs opt-out of force dark when force invert is on
refactor(force invert): use enum/intdef for force dark type in setForceDark() functions
Diffstat (limited to 'libs/hwui/RenderNode.cpp')
| -rw-r--r-- | libs/hwui/RenderNode.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp index d28bb499c907..3e131bc44d39 100644 --- a/libs/hwui/RenderNode.cpp +++ b/libs/hwui/RenderNode.cpp @@ -40,6 +40,7 @@ #ifdef __ANDROID__ #include "include/gpu/ganesh/SkImageGanesh.h" #endif +#include "utils/ForceDark.h" #include "utils/MathUtils.h" #include "utils/StringUtils.h" @@ -403,16 +404,21 @@ void RenderNode::syncDisplayList(TreeObserver& observer, TreeInfo* info) { deleteDisplayList(observer, info); mDisplayList = std::move(mStagingDisplayList); if (mDisplayList) { - WebViewSyncData syncData { - .applyForceDark = info && !info->disableForceDark - }; + WebViewSyncData syncData{.applyForceDark = shouldEnableForceDark(info)}; mDisplayList.syncContents(syncData); handleForceDark(info); } } +inline bool RenderNode::shouldEnableForceDark(TreeInfo* info) { + return CC_UNLIKELY( + info && + (!info->disableForceDark || + info->forceDarkType == android::uirenderer::ForceDarkType::FORCE_INVERT_COLOR_DARK)); +} + void RenderNode::handleForceDark(android::uirenderer::TreeInfo *info) { - if (CC_LIKELY(!info || info->disableForceDark)) { + if (!shouldEnableForceDark(info)) { return; } auto usage = usageHint(); |