status_t BufferQueueLayer::updateActiveBuffer() {
    // update the active buffer
    mPreviousBufferId = getCurrentBufferId();
    mBufferInfo.mBuffer =
            mConsumer->getCurrentBuffer(&mBufferInfo.mBufferSlot, &mBufferInfo.mFence);

    if (mBufferInfo.mBuffer == nullptr) {
        // this can only happen if the very first buffer was rejected.
        return BAD_VALUE;
    }
    return NO_ERROR;
}

调用 Layer::getCurrentBufferId() 更新 mPreviousBufferIdmPreviousBufferIdonLayerDisplayed() 中用来跟踪 fence。

调用 BufferLayerConsumer::getCurrentBuffer() 更新 BufferLayer::BufferInfomBuffermBufferSlotmFence 成员。