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

Commit e72f42de authored by Wei Jia's avatar Wei Jia Committed by android-build-merger
Browse files

Merge "IMediaSource: release MediaBuffers when desired shared memory is not...

Merge "IMediaSource: release MediaBuffers when desired shared memory is not available." into nyc-dev
am: 1d0afc45

* commit '1d0afc45':
  IMediaSource: release MediaBuffers when desired shared memory is not available.

Change-Id: Iae34587f12f41a848ed50c2b33bc5e3644a6a24a
parents e8469b20 1d0afc45
Loading
Loading
Loading
Loading
+8 −2
Original line number Original line Diff line number Diff line
@@ -295,13 +295,19 @@ status_t BnMediaSource::onTransact(
                            mGroup->add_buffer(new MediaBuffer(allocateSize));
                            mGroup->add_buffer(new MediaBuffer(allocateSize));
                        }
                        }


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