Loading services/surfaceflinger/Layer.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -1106,6 +1106,11 @@ uint32_t Layer::doTransaction(uint32_t flags) { mNeedsFiltering = (!getActiveTransform(c).preserveRects() || type >= ui::Transform::SCALE); } if (mChildrenChanged) { flags |= eVisibleRegion; mChildrenChanged = false; } // If the layer is hidden, signal and clear out all local sync points so // that transactions for layers depending on this layer's frames becoming // visible are not blocked Loading Loading @@ -1628,13 +1633,16 @@ size_t Layer::getChildrenCount() const { } void Layer::addChild(const sp<Layer>& layer) { mChildrenChanged = true; mCurrentChildren.add(layer); layer->setParent(this); } ssize_t Layer::removeChild(const sp<Layer>& layer) { layer->setParent(nullptr); mChildrenChanged = true; layer->setParent(nullptr); return mCurrentChildren.remove(layer); } Loading services/surfaceflinger/Layer.h +2 −0 Original line number Diff line number Diff line Loading @@ -849,6 +849,8 @@ protected: // Can only be accessed with the SF state lock held. bool mLayerDetached{false}; // Can only be accessed with the SF state lock held. bool mChildrenChanged{false}; private: /** Loading Loading
services/surfaceflinger/Layer.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -1106,6 +1106,11 @@ uint32_t Layer::doTransaction(uint32_t flags) { mNeedsFiltering = (!getActiveTransform(c).preserveRects() || type >= ui::Transform::SCALE); } if (mChildrenChanged) { flags |= eVisibleRegion; mChildrenChanged = false; } // If the layer is hidden, signal and clear out all local sync points so // that transactions for layers depending on this layer's frames becoming // visible are not blocked Loading Loading @@ -1628,13 +1633,16 @@ size_t Layer::getChildrenCount() const { } void Layer::addChild(const sp<Layer>& layer) { mChildrenChanged = true; mCurrentChildren.add(layer); layer->setParent(this); } ssize_t Layer::removeChild(const sp<Layer>& layer) { layer->setParent(nullptr); mChildrenChanged = true; layer->setParent(nullptr); return mCurrentChildren.remove(layer); } Loading
services/surfaceflinger/Layer.h +2 −0 Original line number Diff line number Diff line Loading @@ -849,6 +849,8 @@ protected: // Can only be accessed with the SF state lock held. bool mLayerDetached{false}; // Can only be accessed with the SF state lock held. bool mChildrenChanged{false}; private: /** Loading