Loading services/surfaceflinger/SurfaceFlinger.cpp +9 −8 Original line number Original line Diff line number Diff line Loading @@ -1781,12 +1781,9 @@ void SurfaceFlinger::updateCursorAsync() void SurfaceFlinger::commitTransaction() void SurfaceFlinger::commitTransaction() { { sp<const DisplayDevice> hw = getDefaultDisplayDevice(); if (!mLayersPendingRemoval.isEmpty()) { if (!mLayersPendingRemoval.isEmpty() && hw->isDisplayOn()) { // Notify removed layers now that they can't be drawn from // Notify removed layers now that they can't be drawn from for (size_t i = 0; i < mLayersPendingRemoval.size(); i++) { for (size_t i = 0; i < mLayersPendingRemoval.size(); i++) { mCurrentState.layersSortedByZ.remove(mLayersPendingRemoval[i]); recordBufferingStats(mLayersPendingRemoval[i]->getName().string(), recordBufferingStats(mLayersPendingRemoval[i]->getName().string(), mLayersPendingRemoval[i]->getOccupancyHistory(true)); mLayersPendingRemoval[i]->getOccupancyHistory(true)); mLayersPendingRemoval[i]->onRemoved(); mLayersPendingRemoval[i]->onRemoved(); Loading Loading @@ -2233,11 +2230,15 @@ status_t SurfaceFlinger::removeLayer(const wp<Layer>& weakLayer) { return NO_ERROR; return NO_ERROR; } } ssize_t index = mCurrentState.layersSortedByZ.remove(layer); if (index >= 0) { mLayersPendingRemoval.push(layer); mLayersPendingRemoval.push(layer); mLayersRemoved = true; mLayersRemoved = true; setTransactionFlags(eTransactionNeeded); setTransactionFlags(eTransactionNeeded); return NO_ERROR; return NO_ERROR; } } return status_t(index); } uint32_t SurfaceFlinger::peekTransactionFlags(uint32_t /* flags */) { uint32_t SurfaceFlinger::peekTransactionFlags(uint32_t /* flags */) { return android_atomic_release_load(&mTransactionFlags); return android_atomic_release_load(&mTransactionFlags); Loading Loading
services/surfaceflinger/SurfaceFlinger.cpp +9 −8 Original line number Original line Diff line number Diff line Loading @@ -1781,12 +1781,9 @@ void SurfaceFlinger::updateCursorAsync() void SurfaceFlinger::commitTransaction() void SurfaceFlinger::commitTransaction() { { sp<const DisplayDevice> hw = getDefaultDisplayDevice(); if (!mLayersPendingRemoval.isEmpty()) { if (!mLayersPendingRemoval.isEmpty() && hw->isDisplayOn()) { // Notify removed layers now that they can't be drawn from // Notify removed layers now that they can't be drawn from for (size_t i = 0; i < mLayersPendingRemoval.size(); i++) { for (size_t i = 0; i < mLayersPendingRemoval.size(); i++) { mCurrentState.layersSortedByZ.remove(mLayersPendingRemoval[i]); recordBufferingStats(mLayersPendingRemoval[i]->getName().string(), recordBufferingStats(mLayersPendingRemoval[i]->getName().string(), mLayersPendingRemoval[i]->getOccupancyHistory(true)); mLayersPendingRemoval[i]->getOccupancyHistory(true)); mLayersPendingRemoval[i]->onRemoved(); mLayersPendingRemoval[i]->onRemoved(); Loading Loading @@ -2233,11 +2230,15 @@ status_t SurfaceFlinger::removeLayer(const wp<Layer>& weakLayer) { return NO_ERROR; return NO_ERROR; } } ssize_t index = mCurrentState.layersSortedByZ.remove(layer); if (index >= 0) { mLayersPendingRemoval.push(layer); mLayersPendingRemoval.push(layer); mLayersRemoved = true; mLayersRemoved = true; setTransactionFlags(eTransactionNeeded); setTransactionFlags(eTransactionNeeded); return NO_ERROR; return NO_ERROR; } } return status_t(index); } uint32_t SurfaceFlinger::peekTransactionFlags(uint32_t /* flags */) { uint32_t SurfaceFlinger::peekTransactionFlags(uint32_t /* flags */) { return android_atomic_release_load(&mTransactionFlags); return android_atomic_release_load(&mTransactionFlags); Loading