diff options
| -rw-r--r-- | services/surfaceflinger/Layer.cpp | 13 | ||||
| -rw-r--r-- | services/surfaceflinger/Layer.h | 2 |
2 files changed, 12 insertions, 3 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index a6adeb3e2f..45679166ba 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -147,7 +147,7 @@ void Layer::onRemovedFromCurrentState() { strongRelative->removeZOrderRelative(this); mFlinger->setTransactionFlags(eTraversalNeeded); } - mCurrentState.zOrderRelativeOf = nullptr; + setZOrderRelativeOf(nullptr); } // Since we are no longer reachable from CurrentState SurfaceFlinger @@ -1164,7 +1164,7 @@ bool Layer::setLayer(int32_t z) { if (strongRelative != nullptr) { strongRelative->removeZOrderRelative(this); } - mCurrentState.zOrderRelativeOf = nullptr; + setZOrderRelativeOf(nullptr); } setTransactionFlags(eTransactionNeeded); return true; @@ -1184,6 +1184,13 @@ void Layer::addZOrderRelative(const wp<Layer>& relative) { setTransactionFlags(eTransactionNeeded); } +void Layer::setZOrderRelativeOf(const wp<Layer>& relativeOf) { + mCurrentState.zOrderRelativeOf = relativeOf; + mCurrentState.sequence++; + mCurrentState.modified = true; + setTransactionFlags(eTransactionNeeded); +} + bool Layer::setRelativeLayer(const sp<IBinder>& relativeToHandle, int32_t relativeZ) { sp<Handle> handle = static_cast<Handle*>(relativeToHandle.get()); if (handle == nullptr) { @@ -1207,7 +1214,7 @@ bool Layer::setRelativeLayer(const sp<IBinder>& relativeToHandle, int32_t relati if (oldZOrderRelativeOf != nullptr) { oldZOrderRelativeOf->removeZOrderRelative(this); } - mCurrentState.zOrderRelativeOf = relative; + setZOrderRelativeOf(relative); relative->addZOrderRelative(this); setTransactionFlags(eTransactionNeeded); diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h index 046482cb6f..3763c587f7 100644 --- a/services/surfaceflinger/Layer.h +++ b/services/surfaceflinger/Layer.h @@ -899,6 +899,8 @@ private: // Layer bounds in screen space. FloatRect mScreenBounds; + + void setZOrderRelativeOf(const wp<Layer>& relativeOf); }; } // namespace android |