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

Commit 0684bf1a authored by Sungtak Lee's avatar Sungtak Lee Committed by Android (Google) Code Review
Browse files

Merge "Codec2: Make surface change work"

parents 373924b4 9b148817
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1693,11 +1693,11 @@ status_t attachToBufferQueue(const C2ConstGraphicBlock& block,
    if (result != OK) {
        ALOGW("attachToBufferQueue -- attachBuffer failed. Error code = %d",
                static_cast<int>(result));
        return false;
        return result;
    }
    ALOGV("attachToBufferQueue -- attachBuffer returned slot %d",
            static_cast<int>(*bqSlot));
    return true;
    return OK;
}

bool getBufferQueueAssignment(const C2ConstGraphicBlock& block,
@@ -1779,7 +1779,7 @@ bool holdBufferQueueBlock(const C2ConstGraphicBlock& block,
            static_cast<int>(bqSlot),
            static_cast<unsigned>(generation));
    _C2BlockFactory::AssignBlockToBufferQueue(
            data, getHgbp(igbp), bqId, bqSlot, true);
            data, getHgbp(igbp), generation, bqId, bqSlot, true);
    return true;
}

+10 −9
Original line number Diff line number Diff line
@@ -1186,7 +1186,7 @@ status_t Codec2Client::Component::queueToOutputSurface(
        uint32_t outputGeneration = mOutputGeneration;
        mOutputBufferQueueMutex.unlock();

        status_t status = !attachToBufferQueue(block,
        status_t status = attachToBufferQueue(block,
                                               outputIgbp,
                                               outputGeneration,
                                               &bqSlot);
@@ -1218,14 +1218,15 @@ status_t Codec2Client::Component::queueToOutputSurface(
        return NO_INIT;
    }

    if (bqId != outputBqId) {
        ALOGV("queueToOutputSurface -- bufferqueue ids mismatch.");
    if (bqId != outputBqId || generation != outputGeneration) {
        if (!holdBufferQueueBlock(block, mOutputIgbp, mOutputBqId, mOutputGeneration)) {
            ALOGE("queueToOutputSurface -- migration fialed");
            return DEAD_OBJECT;
        }

    if (generation != outputGeneration) {
        ALOGV("queueToOutputSurface -- generation numbers mismatch.");
        return DEAD_OBJECT;
        if (!getBufferQueueAssignment(block, &generation, &bqId, &bqSlot)) {
            ALOGE("queueToOutputSurface -- corrupted bq assignment");
            return UNKNOWN_ERROR;
        }
    }

    status_t status = outputIgbp->queueBuffer(static_cast<int>(bqSlot),