Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 027b8115 authored by Wei Jia's avatar Wei Jia
Browse files

IMediaSource: release MediaBuffers when desired shared memory is not available.

Bug: 27970343
Change-Id: Ia86ecbffb3c3ebc2e8e0e10b951fa7b001bbdb5f
parent ca0cde25
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -295,13 +295,19 @@ status_t BnMediaSource::onTransact(
                            mGroup->add_buffer(new MediaBuffer(allocateSize));
                        }

                        MediaBuffer *newBuf = NULL;
                        ret = mGroup->acquire_buffer(
                                &transferBuf, false /* nonBlocking */, usedSize);
                        if (ret != OK || transferBuf == NULL || transferBuf->mMemory == NULL) {
                                &newBuf, false /* nonBlocking */, usedSize);
                        if (ret != OK || newBuf == NULL || newBuf->mMemory == NULL) {
                            ALOGW("failed to acquire shared memory, ret %d", ret);
                            buf->release();
                            if (newBuf != NULL) {
                                newBuf->release();
                            }
                            reply->writeInt32(NULL_BUFFER);
                            return NO_ERROR;
                        }
                        transferBuf = newBuf;
                        memcpy(transferBuf->data(), (uint8_t*)buf->data() + buf->range_offset(),
                                buf->range_length());
                        offset = 0;