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() 更新 mPreviousBufferId
。mPreviousBufferId
在 onLayerDisplayed()
中用来跟踪 fence。
调用 BufferLayerConsumer::getCurrentBuffer() 更新 BufferLayer::BufferInfo 的 mBuffer
、mBufferSlot
和 mFence
成员。