Loading services/surfaceflinger/SurfaceFlinger.cpp +8 −2 Original line number Diff line number Diff line Loading @@ -4162,7 +4162,12 @@ TransactionHandler::TransactionReadiness SurfaceFlinger::transactionReadyBufferC const TransactionHandler::TransactionFlushState& flushState) { using TransactionReadiness = TransactionHandler::TransactionReadiness; auto ready = TransactionReadiness::Ready; flushState.transaction->traverseStatesWithBuffersWhileTrue([&](const layer_state_t& s) -> bool { flushState.transaction->traverseStatesWithBuffersWhileTrue([&](const layer_state_t& s, const std::shared_ptr< renderengine:: ExternalTexture>& externalTexture) -> bool { sp<Layer> layer = LayerHandle::getLayer(s.surface); const auto& transaction = *flushState.transaction; // check for barrier frames Loading @@ -4172,7 +4177,8 @@ TransactionHandler::TransactionReadiness SurfaceFlinger::transactionReadyBufferC // don't wait on the barrier since we know that's stale information. if (layer->getDrawingState().producerId > s.bufferData->producerId) { layer->callReleaseBufferCallback(s.bufferData->releaseBufferListener, s.bufferData->buffer, s.bufferData->frameNumber, externalTexture->getBuffer(), s.bufferData->frameNumber, s.bufferData->acquireFence); // Delete the entire state at this point and not just release the buffer because // everything associated with the Layer in this Transaction is now out of date. Loading services/surfaceflinger/TransactionState.h +1 −1 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ struct TransactionState { for (auto state = states.begin(); state != states.end();) { if (state->state.hasBufferChanges() && state->state.hasValidBuffer() && state->state.surface) { int result = visitor(state->state); int result = visitor(state->state, state->externalTexture); if (result == STOP_TRAVERSAL) return; if (result == DELETE_AND_CONTINUE_TRAVERSAL) { state = states.erase(state); Loading Loading
services/surfaceflinger/SurfaceFlinger.cpp +8 −2 Original line number Diff line number Diff line Loading @@ -4162,7 +4162,12 @@ TransactionHandler::TransactionReadiness SurfaceFlinger::transactionReadyBufferC const TransactionHandler::TransactionFlushState& flushState) { using TransactionReadiness = TransactionHandler::TransactionReadiness; auto ready = TransactionReadiness::Ready; flushState.transaction->traverseStatesWithBuffersWhileTrue([&](const layer_state_t& s) -> bool { flushState.transaction->traverseStatesWithBuffersWhileTrue([&](const layer_state_t& s, const std::shared_ptr< renderengine:: ExternalTexture>& externalTexture) -> bool { sp<Layer> layer = LayerHandle::getLayer(s.surface); const auto& transaction = *flushState.transaction; // check for barrier frames Loading @@ -4172,7 +4177,8 @@ TransactionHandler::TransactionReadiness SurfaceFlinger::transactionReadyBufferC // don't wait on the barrier since we know that's stale information. if (layer->getDrawingState().producerId > s.bufferData->producerId) { layer->callReleaseBufferCallback(s.bufferData->releaseBufferListener, s.bufferData->buffer, s.bufferData->frameNumber, externalTexture->getBuffer(), s.bufferData->frameNumber, s.bufferData->acquireFence); // Delete the entire state at this point and not just release the buffer because // everything associated with the Layer in this Transaction is now out of date. Loading
services/surfaceflinger/TransactionState.h +1 −1 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ struct TransactionState { for (auto state = states.begin(); state != states.end();) { if (state->state.hasBufferChanges() && state->state.hasValidBuffer() && state->state.surface) { int result = visitor(state->state); int result = visitor(state->state, state->externalTexture); if (result == STOP_TRAVERSAL) return; if (result == DELETE_AND_CONTINUE_TRAVERSAL) { state = states.erase(state); Loading