SF: Connect the VDS scratch surface producer
- VirtualDisplaySurface has a BufferQueue for producing scratch
buffers when doing mixed composition for a virtual display.
- Connect/disconnect the producer end of this BufferQueue in the
VirtualDisplaySurface constructor/destructor to avoid using it in a
disconnected state.
Bug 24733179
Change-Id: I87dab9ff4f46d422b7796670b0b4d17b7fd09165
diff --git a/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp b/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp
index 48971bc..571b904 100644
--- a/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp
+++ b/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp
@@ -19,6 +19,7 @@
#include "HWComposer.h"
#include <gui/BufferItem.h>
+#include <gui/IProducerListener.h>
// ---------------------------------------------------------------------------
namespace android {
@@ -93,9 +94,12 @@
mConsumer->setConsumerUsageBits(GRALLOC_USAGE_HW_COMPOSER);
mConsumer->setDefaultBufferSize(sinkWidth, sinkHeight);
sink->setAsyncMode(true);
+ IGraphicBufferProducer::QueueBufferOutput output;
+ mSource[SOURCE_SCRATCH]->connect(NULL, NATIVE_WINDOW_API_EGL, false, &output);
}
VirtualDisplaySurface::~VirtualDisplaySurface() {
+ mSource[SOURCE_SCRATCH]->disconnect(NATIVE_WINDOW_API_EGL);
}
status_t VirtualDisplaySurface::beginFrame(bool mustRecompose) {