summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/BufferLayerConsumer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'services/surfaceflinger/BufferLayerConsumer.cpp')
-rw-r--r--services/surfaceflinger/BufferLayerConsumer.cpp22
1 files changed, 8 insertions, 14 deletions
diff --git a/services/surfaceflinger/BufferLayerConsumer.cpp b/services/surfaceflinger/BufferLayerConsumer.cpp
index fc98dc836a..6709fb4b48 100644
--- a/services/surfaceflinger/BufferLayerConsumer.cpp
+++ b/services/surfaceflinger/BufferLayerConsumer.cpp
@@ -478,20 +478,15 @@ void BufferLayerConsumer::onSidebandStreamChanged() {
}
}
-void BufferLayerConsumer::onBufferAllocated(const BufferItem& item) {
- if (item.mGraphicBuffer != nullptr) {
- std::shared_ptr<Image> image = std::make_shared<Image>(item.mGraphicBuffer, mRE);
- std::shared_ptr<Image> oldImage;
- {
- std::lock_guard<std::mutex> lock(mImagesMutex);
- oldImage = mImages[item.mSlot];
- if (oldImage == nullptr || oldImage->graphicBuffer() == nullptr ||
- oldImage->graphicBuffer()->getId() != item.mGraphicBuffer->getId()) {
- mImages[item.mSlot] = std::make_shared<Image>(item.mGraphicBuffer, mRE);
- }
- image = mImages[item.mSlot];
+void BufferLayerConsumer::onBufferAvailable(const BufferItem& item) {
+ if (item.mGraphicBuffer != nullptr && item.mSlot != BufferQueue::INVALID_BUFFER_SLOT) {
+ std::lock_guard<std::mutex> lock(mImagesMutex);
+ const std::shared_ptr<Image>& oldImage = mImages[item.mSlot];
+ if (oldImage == nullptr || oldImage->graphicBuffer() == nullptr ||
+ oldImage->graphicBuffer()->getId() != item.mGraphicBuffer->getId()) {
+ mImages[item.mSlot] = std::make_shared<Image>(item.mGraphicBuffer, mRE);
+ mRE.cacheExternalTextureBuffer(item.mGraphicBuffer);
}
- mRE.cacheExternalTextureBuffer(image->graphicBuffer());
}
}
@@ -533,5 +528,4 @@ BufferLayerConsumer::Image::~Image() {
mRE.unbindExternalTextureBuffer(mGraphicBuffer->getId());
}
}
-
}; // namespace android