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
This commit is contained in:
Dan Stoza 2015-03-02 22:12:37 -08:00
parent 123edd9f81
commit f8e3c6b6d8
2 changed files with 6 additions and 1 deletions

View File

@ -157,6 +157,7 @@ protected:
virtual int lockBuffer_DEPRECATED(ANativeWindowBuffer* buffer); virtual int lockBuffer_DEPRECATED(ANativeWindowBuffer* buffer);
virtual int connect(int api, const sp<IProducerListener>& listener);
virtual int connect(int api); virtual int connect(int api);
virtual int disconnect(int api); virtual int disconnect(int api);
virtual int setBufferCount(int bufferCount); virtual int setBufferCount(int bufferCount);

View File

@ -547,9 +547,13 @@ int Surface::dispatchSetSidebandStream(va_list args) {
} }
int Surface::connect(int api) { 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(); ATRACE_CALL();
ALOGV("Surface::connect"); ALOGV("Surface::connect");
static sp<IProducerListener> listener = new DummyProducerListener();
Mutex::Autolock lock(mMutex); Mutex::Autolock lock(mMutex);
IGraphicBufferProducer::QueueBufferOutput output; IGraphicBufferProducer::QueueBufferOutput output;
int err = mGraphicBufferProducer->connect(listener, api, mProducerControlledByApp, &output); int err = mGraphicBufferProducer->connect(listener, api, mProducerControlledByApp, &output);