summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/BufferLayerConsumer.cpp
diff options
context:
space:
mode:
author Xin Li <delphij@google.com> 2019-09-08 22:07:47 -0700
committer Xin Li <delphij@google.com> 2019-09-08 22:07:47 -0700
commit76cc73e91c8be1be49ca7264d21178b0c60ccec8 (patch)
tree0a7fa5c19d5d29d40aab5181e0ee02e4f73f0362 /services/surfaceflinger/BufferLayerConsumer.cpp
parentb9a4f9efdd42eaaf495b9433db2fc5db3a813b94 (diff)
parent5d5329644df97df2718a63c29345fdc17a75b9b5 (diff)
Merge qt-r1-dev-plus-aosp-without-vendor (5817612) into stage-aosp-master
Bug: 135460123 Change-Id: I02a643052e3023ac029cdec76ee24dfa99d82b29 Merged-In: Ied9a812f235e2a5146381b0ac8c602db1c6035f5
Diffstat (limited to 'services/surfaceflinger/BufferLayerConsumer.cpp')
-rw-r--r--services/surfaceflinger/BufferLayerConsumer.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/services/surfaceflinger/BufferLayerConsumer.cpp b/services/surfaceflinger/BufferLayerConsumer.cpp
index 6709fb4b48..414814a6f4 100644
--- a/services/surfaceflinger/BufferLayerConsumer.cpp
+++ b/services/surfaceflinger/BufferLayerConsumer.cpp
@@ -369,6 +369,15 @@ const Region& BufferLayerConsumer::getSurfaceDamage() const {
return mCurrentSurfaceDamage;
}
+void BufferLayerConsumer::mergeSurfaceDamage(const Region& damage) {
+ if (damage.bounds() == Rect::INVALID_RECT ||
+ mCurrentSurfaceDamage.bounds() == Rect::INVALID_RECT) {
+ mCurrentSurfaceDamage = Region::INVALID_REGION;
+ } else {
+ mCurrentSurfaceDamage |= damage;
+ }
+}
+
int BufferLayerConsumer::getCurrentApi() const {
Mutex::Autolock lock(mMutex);
return mCurrentApi;
@@ -485,7 +494,6 @@ void BufferLayerConsumer::onBufferAvailable(const BufferItem& item) {
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);
}
}
}
@@ -522,6 +530,12 @@ void BufferLayerConsumer::dumpLocked(String8& result, const char* prefix) const
ConsumerBase::dumpLocked(result, prefix);
}
+BufferLayerConsumer::Image::Image(const sp<GraphicBuffer>& graphicBuffer,
+ renderengine::RenderEngine& engine)
+ : mGraphicBuffer(graphicBuffer), mRE(engine) {
+ mRE.cacheExternalTextureBuffer(mGraphicBuffer);
+}
+
BufferLayerConsumer::Image::~Image() {
if (mGraphicBuffer != nullptr) {
ALOGV("Destroying buffer: %" PRId64, mGraphicBuffer->getId());