Loading services/surfaceflinger/SurfaceFlinger.cpp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -2730,8 +2730,6 @@ status_t SurfaceFlinger::removeLayer(const sp<Layer>& layer, bool topLevelOnly) return NO_ERROR; return NO_ERROR; } } index = p->removeChild(layer); sp<Layer> ancestor = p; sp<Layer> ancestor = p; while (ancestor->getParent() != nullptr) { while (ancestor->getParent() != nullptr) { ancestor = ancestor->getParent(); ancestor = ancestor->getParent(); Loading @@ -2740,6 +2738,8 @@ status_t SurfaceFlinger::removeLayer(const sp<Layer>& layer, bool topLevelOnly) ALOGE("removeLayer called with a layer whose parent has been removed"); ALOGE("removeLayer called with a layer whose parent has been removed"); return NAME_NOT_FOUND; return NAME_NOT_FOUND; } } index = p->removeChild(layer); } else { } else { index = mCurrentState.layersSortedByZ.remove(layer); index = mCurrentState.layersSortedByZ.remove(layer); } } Loading services/surfaceflinger/SurfaceFlinger_hwc1.cpp +15 −1 Original line number Original line Diff line number Diff line Loading @@ -2327,8 +2327,13 @@ status_t SurfaceFlinger::addClientLayer(const sp<Client>& client, if (parent == nullptr) { if (parent == nullptr) { mCurrentState.layersSortedByZ.add(lbc); mCurrentState.layersSortedByZ.add(lbc); } else { } else { if (mCurrentState.layersSortedByZ.indexOf(parent) < 0) { ALOGE("addClientLayer called with a removed parent"); return NAME_NOT_FOUND; } parent->addChild(lbc); parent->addChild(lbc); } } mGraphicBufferProducerList.add(IInterface::asBinder(gbc)); mGraphicBufferProducerList.add(IInterface::asBinder(gbc)); mLayersAdded = true; mLayersAdded = true; mNumLayers++; mNumLayers++; Loading @@ -2350,6 +2355,15 @@ status_t SurfaceFlinger::removeLayer(const sp<Layer>& layer, bool topLevelOnly) return NO_ERROR; return NO_ERROR; } } sp<Layer> ancestor = p; while (ancestor->getParent() != nullptr) { ancestor = ancestor->getParent(); } if (mCurrentState.layersSortedByZ.indexOf(ancestor) < 0) { ALOGE("removeLayer called with a layer whose parent has been removed"); return NAME_NOT_FOUND; } index = p->removeChild(layer); index = p->removeChild(layer); } else { } else { index = mCurrentState.layersSortedByZ.remove(layer); index = mCurrentState.layersSortedByZ.remove(layer); Loading @@ -2371,7 +2385,7 @@ status_t SurfaceFlinger::removeLayer(const sp<Layer>& layer, bool topLevelOnly) mLayersPendingRemoval.add(layer); mLayersPendingRemoval.add(layer); mLayersRemoved = true; mLayersRemoved = true; mNumLayers--; mNumLayers -= 1 + layer->getChildrenCount(); setTransactionFlags(eTransactionNeeded); setTransactionFlags(eTransactionNeeded); return NO_ERROR; return NO_ERROR; } } Loading Loading
services/surfaceflinger/SurfaceFlinger.cpp +2 −2 Original line number Original line Diff line number Diff line Loading @@ -2730,8 +2730,6 @@ status_t SurfaceFlinger::removeLayer(const sp<Layer>& layer, bool topLevelOnly) return NO_ERROR; return NO_ERROR; } } index = p->removeChild(layer); sp<Layer> ancestor = p; sp<Layer> ancestor = p; while (ancestor->getParent() != nullptr) { while (ancestor->getParent() != nullptr) { ancestor = ancestor->getParent(); ancestor = ancestor->getParent(); Loading @@ -2740,6 +2738,8 @@ status_t SurfaceFlinger::removeLayer(const sp<Layer>& layer, bool topLevelOnly) ALOGE("removeLayer called with a layer whose parent has been removed"); ALOGE("removeLayer called with a layer whose parent has been removed"); return NAME_NOT_FOUND; return NAME_NOT_FOUND; } } index = p->removeChild(layer); } else { } else { index = mCurrentState.layersSortedByZ.remove(layer); index = mCurrentState.layersSortedByZ.remove(layer); } } Loading
services/surfaceflinger/SurfaceFlinger_hwc1.cpp +15 −1 Original line number Original line Diff line number Diff line Loading @@ -2327,8 +2327,13 @@ status_t SurfaceFlinger::addClientLayer(const sp<Client>& client, if (parent == nullptr) { if (parent == nullptr) { mCurrentState.layersSortedByZ.add(lbc); mCurrentState.layersSortedByZ.add(lbc); } else { } else { if (mCurrentState.layersSortedByZ.indexOf(parent) < 0) { ALOGE("addClientLayer called with a removed parent"); return NAME_NOT_FOUND; } parent->addChild(lbc); parent->addChild(lbc); } } mGraphicBufferProducerList.add(IInterface::asBinder(gbc)); mGraphicBufferProducerList.add(IInterface::asBinder(gbc)); mLayersAdded = true; mLayersAdded = true; mNumLayers++; mNumLayers++; Loading @@ -2350,6 +2355,15 @@ status_t SurfaceFlinger::removeLayer(const sp<Layer>& layer, bool topLevelOnly) return NO_ERROR; return NO_ERROR; } } sp<Layer> ancestor = p; while (ancestor->getParent() != nullptr) { ancestor = ancestor->getParent(); } if (mCurrentState.layersSortedByZ.indexOf(ancestor) < 0) { ALOGE("removeLayer called with a layer whose parent has been removed"); return NAME_NOT_FOUND; } index = p->removeChild(layer); index = p->removeChild(layer); } else { } else { index = mCurrentState.layersSortedByZ.remove(layer); index = mCurrentState.layersSortedByZ.remove(layer); Loading @@ -2371,7 +2385,7 @@ status_t SurfaceFlinger::removeLayer(const sp<Layer>& layer, bool topLevelOnly) mLayersPendingRemoval.add(layer); mLayersPendingRemoval.add(layer); mLayersRemoved = true; mLayersRemoved = true; mNumLayers--; mNumLayers -= 1 + layer->getChildrenCount(); setTransactionFlags(eTransactionNeeded); setTransactionFlags(eTransactionNeeded); return NO_ERROR; return NO_ERROR; } } Loading