summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/Layer.cpp
diff options
context:
space:
mode:
author Robert Carr <racarr@google.com> 2019-07-03 22:38:19 -0700
committer android-build-merger <android-build-merger@google.com> 2019-07-03 22:38:19 -0700
commitd0ce60b3ed54bd81671fb8912970c55db910eea4 (patch)
tree6f1568faa4e49d431ac50b02788dfcf363f54b08 /services/surfaceflinger/Layer.cpp
parent9aa95dfd3c382980f414a92d35c0f955d83297dd (diff)
parentb873551d2433cd3bf3be53df7eabda001d2629ec (diff)
Merge "SurfaceFlinger: Hide Z order relatives when relativeOf is hiddenByPolicy." into qt-dev am: e377b27242 am: fe43c1b8e4
am: b873551d24 Change-Id: I99739951a7601307cea075fdbe5ac44a6be7cdab
Diffstat (limited to 'services/surfaceflinger/Layer.cpp')
-rw-r--r--services/surfaceflinger/Layer.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index 83ab5cfce2..414c8dd23d 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -1205,6 +1205,14 @@ bool Layer::isHiddenByPolicy() const {
if (parent != nullptr && parent->isHiddenByPolicy()) {
return true;
}
+ if (usingRelativeZ(LayerVector::StateSet::Drawing)) {
+ auto zOrderRelativeOf = mDrawingState.zOrderRelativeOf.promote();
+ if (zOrderRelativeOf != nullptr) {
+ if (zOrderRelativeOf->isHiddenByPolicy()) {
+ return true;
+ }
+ }
+ }
return s.flags & layer_state_t::eLayerHidden;
}
@@ -1586,7 +1594,7 @@ int32_t Layer::getZ() const {
return mDrawingState.z;
}
-bool Layer::usingRelativeZ(LayerVector::StateSet stateSet) {
+bool Layer::usingRelativeZ(LayerVector::StateSet stateSet) const {
const bool useDrawing = stateSet == LayerVector::StateSet::Drawing;
const State& state = useDrawing ? mDrawingState : mCurrentState;
return state.zOrderRelativeOf != nullptr;