Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 484035e7 authored by Chavi Weingarten's avatar Chavi Weingarten Committed by Android (Google) Code Review
Browse files

Merge "Use external texture for buffer release." into udc-dev

parents 37f86ed8 c8bcb68f
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -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
@@ -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.
+1 −1
Original line number Diff line number Diff line
@@ -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);