diff options
| author | 2016-09-01 19:46:30 +0000 | |
|---|---|---|
| committer | 2016-09-01 19:46:30 +0000 | |
| commit | 669867835ba2a8120cc3c171c8dc3e41ae9b9c8c (patch) | |
| tree | f91547eba108df0c061ebf923cffe6a85ee7705a | |
| parent | 4a8039121fe648a3773a3aade091527baba35058 (diff) | |
| parent | eddbef88cf78deb9b08a6cad2c9cb67e4ddcea0d (diff) | |
Merge "libgui: Add null pointer check in setDisplaySurface" into nyc-mr1-dev
| -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)); |