libgui: Add null pointer check in setDisplaySurface am: eddbef88cf am: 8663a03444
am: 739c90cb7b
Change-Id: I587f5160c6abb9e4e4c98657658ff63a91ac1a40
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index 56f495f..78afc76 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -495,14 +495,16 @@
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));