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

Commit 5704678f authored by Chavi Weingarten's avatar Chavi Weingarten Committed by Automerger Merge Worker
Browse files

Merge "Use external texture for buffer release." into udc-dev am: 484035e7

parents 75ac80ef 484035e7
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);