Surface: Permit an IProducerListener on connect
This change allows clients of Surface to provide an IProducerListener
callback object to Surface::connect, which will be passed down to the
underlying IGraphicBufferProducer.
Change-Id: I5ea5229bf3a329bf02c6bd20e7247039c75d136b
diff --git a/include/gui/Surface.h b/include/gui/Surface.h
index 98f4f4f..863f22b 100644
--- a/include/gui/Surface.h
+++ b/include/gui/Surface.h
@@ -157,6 +157,7 @@
virtual int lockBuffer_DEPRECATED(ANativeWindowBuffer* buffer);
+ virtual int connect(int api, const sp<IProducerListener>& listener);
virtual int connect(int api);
virtual int disconnect(int api);
virtual int setBufferCount(int bufferCount);
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
index aa4aee4..98489b1 100644
--- a/libs/gui/Surface.cpp
+++ b/libs/gui/Surface.cpp
@@ -547,9 +547,13 @@
}
int Surface::connect(int api) {
+ static sp<IProducerListener> listener = new DummyProducerListener();
+ return connect(api, listener);
+}
+
+int Surface::connect(int api, const sp<IProducerListener>& listener) {
ATRACE_CALL();
ALOGV("Surface::connect");
- static sp<IProducerListener> listener = new DummyProducerListener();
Mutex::Autolock lock(mMutex);
IGraphicBufferProducer::QueueBufferOutput output;
int err = mGraphicBufferProducer->connect(listener, api, mProducerControlledByApp, &output);