diff options
author | Shivaprasad Hongal <shongal@codeaurora.org> | 2015-11-09 11:17:02 -0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-11-30 19:01:24 -0800 |
commit | bbb702de207a2e10ccbeba4d9d8aa4e14b61d2cf (patch) | |
tree | 7a332c6ec490b5f4d092e185c3c260986b2e8d05 /media/libmediaplayerservice | |
parent | e4b41241cbdb336de6dd1ee44fbcddc641eb02a7 (diff) | |
download | frameworks_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')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/GenericSource.cpp | 10 |
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; } |