diff options
| author | 2016-09-01 19:57:17 +0000 | |
|---|---|---|
| committer | 2016-09-01 19:57:17 +0000 | |
| commit | 8663a03444df4ead2ed5f5f5cb1251e48d55052d (patch) | |
| tree | e21ca2e470a7716cc1ce0c03f28fca2d23684cdd | |
| parent | f74b920e0266f426bd351c50d6993d54ec13281c (diff) | |
| parent | eddbef88cf78deb9b08a6cad2c9cb67e4ddcea0d (diff) | |
libgui: Add null pointer check in setDisplaySurface
am: eddbef88cf
Change-Id: I3a3ddac84b3f38f6c911ff65642441fd187bbe54
| -rw-r--r-- | libs/gui/SurfaceComposerClient.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp index 7ed12b7bb4..b78de2ea59 100644 --- a/libs/gui/SurfaceComposerClient.cpp +++ b/libs/gui/SurfaceComposerClient.cpp @@ -475,14 +475,16 @@ DisplayState& Composer::getDisplayStateLocked(const sp<IBinder>& token) { status_t Composer::setDisplaySurface(const sp<IBinder>& token, sp<IGraphicBufferProducer> bufferProducer) { - // Make sure that composition can never be stalled by a virtual display - // consumer that isn't processing buffers fast enough. - status_t err = bufferProducer->setAsyncMode(true); - if (err != NO_ERROR) { - ALOGE("Composer::setDisplaySurface Failed to enable async mode on the " - "BufferQueue. This BufferQueue cannot be used for virtual " - "display. (%d)", err); - return err; + if (bufferProducer.get() != nullptr) { + // Make sure that composition can never be stalled by a virtual display + // consumer that isn't processing buffers fast enough. + status_t err = bufferProducer->setAsyncMode(true); + if (err != NO_ERROR) { + ALOGE("Composer::setDisplaySurface Failed to enable async mode on the " + "BufferQueue. This BufferQueue cannot be used for virtual " + "display. (%d)", err); + return err; + } } Mutex::Autolock _l(mLock); DisplayState& s(getDisplayStateLocked(token)); |