diff options
author | 2014-03-12 10:17:20 -0700 | |
---|---|---|
committer | 2014-03-12 10:17:20 -0700 | |
commit | f522af7eb6048c2efae77d7b94960bc49c003e0e (patch) | |
tree | 166d856228efb8bee8ee37a7e5a6f9a01b0a0531 | |
parent | c9ed7d376882ff3c32913473fecd729c804dad0e (diff) |
BufferQueue: Allow returning interfaces as I*/Bn*
This adds a second createBufferQueue method that returns
sp<IGraphicBuffer*> interfaces instead of sp<BnGraphicBuffer*>, since
most clients don't actually need the Binderized versions (but some
might).
Change-Id: Iaf4f719c96ddb6f704afc75cf52be22588173e32
-rw-r--r-- | include/gui/BufferQueue.h | 13 | ||||
-rw-r--r-- | libs/gui/BufferQueue.cpp | 13 |
2 files changed, 22 insertions, 4 deletions
diff --git a/include/gui/BufferQueue.h b/include/gui/BufferQueue.h index f230e559e6..b0180a6900 100644 --- a/include/gui/BufferQueue.h +++ b/include/gui/BufferQueue.h @@ -106,14 +106,19 @@ public: wp<ConsumerListener> mConsumerListener; }; - static void createBufferQueue(sp<BnGraphicBufferProducer>* outProducer, - sp<BnGraphicBufferConsumer>* outConsumer, - const sp<IGraphicBufferAlloc>& allocator = NULL); - // BufferQueue manages a pool of gralloc memory slots to be used by // producers and consumers. allocator is used to allocate all the // needed gralloc buffers. BufferQueue(const sp<IGraphicBufferAlloc>& allocator = NULL); + + static void createBufferQueue(sp<BnGraphicBufferProducer>* outProducer, + sp<BnGraphicBufferConsumer>* outConsumer, + const sp<IGraphicBufferAlloc>& allocator = NULL); + + static void createBufferQueue(sp<IGraphicBufferProducer>* outProducer, + sp<IGraphicBufferConsumer>* outConsumer, + const sp<IGraphicBufferAlloc>& allocator = NULL); + virtual ~BufferQueue(); /* diff --git a/libs/gui/BufferQueue.cpp b/libs/gui/BufferQueue.cpp index 26e215b1d7..5000444d75 100644 --- a/libs/gui/BufferQueue.cpp +++ b/libs/gui/BufferQueue.cpp @@ -56,6 +56,19 @@ void BufferQueue::createBufferQueue(sp<BnGraphicBufferProducer>* outProducer, *outConsumer = new BufferQueueConsumer(core); } +void BufferQueue::createBufferQueue(sp<IGraphicBufferProducer>* outProducer, + sp<IGraphicBufferConsumer>* outConsumer, + const sp<IGraphicBufferAlloc>& allocator) { + LOG_ALWAYS_FATAL_IF(outProducer == NULL, + "BufferQueue: outProducer must not be NULL"); + LOG_ALWAYS_FATAL_IF(outConsumer == NULL, + "BufferQueue: outConsumer must not be NULL"); + + sp<BufferQueueCore> core(new BufferQueueCore(allocator)); + *outProducer = new BufferQueueProducer(core); + *outConsumer = new BufferQueueConsumer(core); +} + BufferQueue::BufferQueue(const sp<IGraphicBufferAlloc>& allocator) : mProducer(), mConsumer() |