|
24 | 24 | #include <com_android_graphics_libgui_flags.h> |
25 | 25 | #include <gui/BufferItem.h> |
26 | 26 | #include <gui/BufferItemConsumer.h> |
| 27 | +#include <gui/Surface.h> |
27 | 28 | #include <ui/BufferQueueDefs.h> |
28 | 29 | #include <ui/GraphicBuffer.h> |
29 | 30 |
|
|
35 | 36 |
|
36 | 37 | namespace android { |
37 | 38 |
|
| 39 | +std::tuple<sp<BufferItemConsumer>, sp<Surface>> BufferItemConsumer::create( |
| 40 | + uint64_t consumerUsage, int bufferCount, bool controlledByApp, |
| 41 | + bool isConsumerSurfaceFlinger) { |
| 42 | +#if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) |
| 43 | + sp<BufferItemConsumer> bufferItemConsumer = |
| 44 | + sp<BufferItemConsumer>::make(consumerUsage, bufferCount, controlledByApp, |
| 45 | + isConsumerSurfaceFlinger); |
| 46 | + return {bufferItemConsumer, bufferItemConsumer->getSurface()}; |
| 47 | +#else |
| 48 | + sp<IGraphicBufferProducer> igbp; |
| 49 | + sp<IGraphicBufferConsumer> igbc; |
| 50 | + BufferQueue::createBufferQueue(&igbp, &igbc, isConsumerSurfaceFlinger); |
| 51 | + sp<BufferItemConsumer> bufferItemConsumer = |
| 52 | + sp<BufferItemConsumer>::make(igbc, consumerUsage, bufferCount, controlledByApp); |
| 53 | + return {bufferItemConsumer, sp<Surface>::make(igbp, controlledByApp)}; |
| 54 | +#endif |
| 55 | +} |
| 56 | + |
| 57 | +sp<BufferItemConsumer> BufferItemConsumer::create(const sp<IGraphicBufferConsumer>& consumer, |
| 58 | + uint64_t consumerUsage, int bufferCount, |
| 59 | + bool controlledByApp) { |
| 60 | + return sp<BufferItemConsumer>::make(consumer, consumerUsage, bufferCount, controlledByApp); |
| 61 | +} |
| 62 | + |
38 | 63 | #if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CONSUMER_BASE_OWNS_BQ) |
39 | 64 | BufferItemConsumer::BufferItemConsumer(uint64_t consumerUsage, int bufferCount, |
40 | 65 | bool controlledByApp, bool isConsumerSurfaceFlinger) |
|
0 commit comments