From 0a0680945710946f3bf01ae05f933ccec4162dc8 Mon Sep 17 00:00:00 2001 From: Pablo Ceballos Date: Wed, 29 Jun 2016 15:08:33 -0700 Subject: BQ: Handle buffer allocation failure Return the slot to the mFreeSlots if we fail to allocate. Bug 29873396 Change-Id: Icafc5c64c7233d47e160f7a56e5a314e4a01611d --- libs/gui/BufferQueueProducer.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'libs/gui/BufferQueueProducer.cpp') diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp index 7ca92b77bf..4212e4c27a 100644 --- a/libs/gui/BufferQueueProducer.cpp +++ b/libs/gui/BufferQueueProducer.cpp @@ -509,11 +509,15 @@ status_t BufferQueueProducer::dequeueBuffer(int *outSlot, mCore->mIsAllocatingCondition.broadcast(); if (graphicBuffer == NULL) { + mCore->mFreeSlots.insert(*outSlot); + mCore->clearBufferSlotLocked(*outSlot); BQ_LOGE("dequeueBuffer: createGraphicBuffer failed"); return error; } if (mCore->mIsAbandoned) { + mCore->mFreeSlots.insert(*outSlot); + mCore->clearBufferSlotLocked(*outSlot); BQ_LOGE("dequeueBuffer: BufferQueue has been abandoned"); return NO_INIT; } -- cgit v1.2.3-59-g8ed1b