All consumers now take an IGraphicBufferConsumer instead of a BufferQueue
this means they only have access to the consumer end of
the interface. we had a lot of code that assumed consumers
where holding a BufferQueue (i.e.: both ends), so most of
this change is untangling in fix that
Bug: 9265647
Change-Id: Ic2e2596ee14c7535f51bf26d9a897a0fc036d22c
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index 401b0f3..2defe34 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -113,8 +113,8 @@
void Layer::onFirstRef()
{
// Creates a custom BufferQueue for SurfaceFlingerConsumer to use
- sp<BufferQueue> bq = new SurfaceTextureLayer(mFlinger);
- mSurfaceFlingerConsumer = new SurfaceFlingerConsumer(bq, mTextureName,
+ mBufferQueue = new SurfaceTextureLayer(mFlinger);
+ mSurfaceFlingerConsumer = new SurfaceFlingerConsumer(mBufferQueue, mTextureName,
GL_TEXTURE_EXTERNAL_OES, false);
mSurfaceFlingerConsumer->setConsumerUsageBits(getEffectiveUsage(0));
@@ -228,8 +228,8 @@
return new Handle(mFlinger, this);
}
-sp<BufferQueue> Layer::getBufferQueue() const {
- return mSurfaceFlingerConsumer->getBufferQueue();
+sp<IGraphicBufferProducer> Layer::getBufferQueue() const {
+ return mBufferQueue;
}
// ---------------------------------------------------------------------------
@@ -926,7 +926,7 @@
}
virtual bool reject(const sp<GraphicBuffer>& buf,
- const BufferQueue::BufferItem& item) {
+ const IGraphicBufferConsumer::BufferItem& item) {
if (buf == NULL) {
return false;
}