summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/GenericSource.cpp
diff options
context:
space:
mode:
authorShivaprasad Hongal <shongal@codeaurora.org>2015-11-09 11:17:02 -0800
committerSteve Kondik <steve@cyngn.com>2015-11-30 19:01:24 -0800
commitbbb702de207a2e10ccbeba4d9d8aa4e14b61d2cf (patch)
tree7a332c6ec490b5f4d092e185c3c260986b2e8d05 /media/libmediaplayerservice/nuplayer/GenericSource.cpp
parente4b41241cbdb336de6dd1ee44fbcddc641eb02a7 (diff)
downloadframeworks_av-bbb702de207a2e10ccbeba4d9d8aa4e14b61d2cf.zip
frameworks_av-bbb702de207a2e10ccbeba4d9d8aa4e14b61d2cf.tar.gz
frameworks_av-bbb702de207a2e10ccbeba4d9d8aa4e14b61d2cf.tar.bz2
GenericSource: acquire lock only for assigning dataSource.
Acquire lock after DataSource::CreateFromURI() to avoid a deadlock/ANR as GenericSource::disconnect() also tries to acquire same lock. Change-Id: I28430800853ed11e0a37a8a38defab72470c3f6d
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/GenericSource.cpp')
-rw-r--r--media/libmediaplayerservice/nuplayer/GenericSource.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
index 1e8c2d3..2341817 100644
--- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp
+++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
@@ -393,16 +393,20 @@ void NuPlayer::GenericSource::onPrepareAsync() {
}
}
- Mutex::Autolock _l(mSourceLock);
- mDataSource = DataSource::CreateFromURI(
+ sp<DataSource> dataSource;
+ dataSource = DataSource::CreateFromURI(
mHTTPService, uri, &mUriHeaders, &contentType,
static_cast<HTTPBase *>(mHttpSource.get()),
true /*use extended cache*/);
+ Mutex::Autolock _l(mSourceLock);
+ mDataSource = dataSource;
} else {
mIsWidevine = false;
+ sp<DataSource> dataSource;
+ dataSource = new FileSource(mFd, mOffset, mLength);
Mutex::Autolock _l(mSourceLock);
- mDataSource = new FileSource(mFd, mOffset, mLength);
+ mDataSource = dataSource;
mFd = -1;
}