IMediaSource: fix local MediaBufferGroup refcount
Bug: 31526329
Change-Id: Ib596454e1c224e135dd51f95b0182f86d9e76f55
(cherry picked from commit 9996d9d39618b89d0f85c98b8036f003290f0d7e)
diff --git a/media/libmedia/IMediaSource.cpp b/media/libmedia/IMediaSource.cpp
index 5289c5f..595bad9 100644
--- a/media/libmedia/IMediaSource.cpp
+++ b/media/libmedia/IMediaSource.cpp
@@ -412,11 +412,11 @@
reply->writeInt32(offset);
reply->writeInt32(length);
buf->meta_data()->writeToParcel(*reply);
- if (transferBuf == buf) {
- buf->addRemoteRefcount(1);
- if (!supportNonblockingRead()) {
- maxNumBuffers = 0; // stop readMultiple with one shared buffer.
- }
+ transferBuf->addRemoteRefcount(1);
+ if (transferBuf != buf) {
+ transferBuf->release(); // release local ref
+ } else if (!supportNonblockingRead()) {
+ maxNumBuffers = 0; // stop readMultiple with one shared buffer.
}
} else {
ALOGV_IF(buf->mMemory != nullptr,