From f0cf5f103cf9c54d59de4ed6f1d8ddd2302dec1b Mon Sep 17 00:00:00 2001 From: Jamie Gennis Date: Wed, 25 Sep 2013 17:21:56 -0700 Subject: [PATCH] BufferQueue: fix a test crash Bug: 10935880 Change-Id: If76e9fb055103bad0db7e6c16487532671573149 --- libs/gui/BufferQueue.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/libs/gui/BufferQueue.cpp b/libs/gui/BufferQueue.cpp index 87d66e2b7..c165a6820 100644 --- a/libs/gui/BufferQueue.cpp +++ b/libs/gui/BufferQueue.cpp @@ -668,11 +668,15 @@ status_t BufferQueue::connect(const sp& token, mConnectedApi = api; output->inflate(mDefaultWidth, mDefaultHeight, mTransformHint, mQueue.size()); - // set-up a death notification so that we can disconnect automatically - // when/if the remote producer dies. - // This will fail with INVALID_OPERATION if the "token" is local to our process. - if (token->linkToDeath(static_cast(this)) == NO_ERROR) { - mConnectedProducerToken = token; + // set-up a death notification so that we can disconnect + // automatically when/if the remote producer dies. + if (token != NULL && token->remoteBinder() != NULL) { + status_t err = token->linkToDeath(static_cast(this)); + if (err == NO_ERROR) { + mConnectedProducerToken = token; + } else { + ALOGE("linkToDeath failed: %s (%d)", strerror(-err), err); + } } } break;