summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pablo Ceballos <pceballos@google.com> 2016-09-01 19:57:17 +0000
committer android-build-merger <android-build-merger@google.com> 2016-09-01 19:57:17 +0000
commit8663a03444df4ead2ed5f5f5cb1251e48d55052d (patch)
treee21ca2e470a7716cc1ce0c03f28fca2d23684cdd
parentf74b920e0266f426bd351c50d6993d54ec13281c (diff)
parenteddbef88cf78deb9b08a6cad2c9cb67e4ddcea0d (diff)
libgui: Add null pointer check in setDisplaySurface
am: eddbef88cf Change-Id: I3a3ddac84b3f38f6c911ff65642441fd187bbe54
-rw-r--r--libs/gui/SurfaceComposerClient.cpp18
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));