diff options
author | Ricardo Cerqueira <ricardo@cyngn.com> | 2015-11-03 23:35:37 +0000 |
---|---|---|
committer | Ricardo Cerqueira <ricardo@cyngn.com> | 2015-11-03 23:35:37 +0000 |
commit | 2a4d9df8c969213f1942ea9f116293adbf41e2d3 (patch) | |
tree | ce8e8abdda03b1ed087b1bbfa88032159991af6a /media/libmediaplayerservice/nuplayer/GenericSource.cpp | |
parent | bdf2ad577d53139ec69e44b9cc8b8b90f8be330b (diff) | |
parent | 02103bb21c90abdca4e4ba91f7e3e007a82e01fd (diff) | |
download | frameworks_av-2a4d9df8c969213f1942ea9f116293adbf41e2d3.zip frameworks_av-2a4d9df8c969213f1942ea9f116293adbf41e2d3.tar.gz frameworks_av-2a4d9df8c969213f1942ea9f116293adbf41e2d3.tar.bz2 |
Merge tag 'android-6.0.0_r5' into HEAD
Android 6.0.0 release 5
Conflicts:
media/libstagefright/OggExtractor.cpp
media/libstagefright/Utils.cpp
Change-Id: I2ea44836c5cc3da8ffa2092522293c433bf7538c
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/GenericSource.cpp')
-rw-r--r-- | media/libmediaplayerservice/nuplayer/GenericSource.cpp | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp index 6957a90..21befd3 100644 --- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp +++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp @@ -468,9 +468,17 @@ void NuPlayer::GenericSource::finishPrepareAsync() { void NuPlayer::GenericSource::notifyPreparedAndCleanup(status_t err) { if (err != OK) { - mDataSource.clear(); - mCachedSource.clear(); - mHttpSource.clear(); + { + sp<DataSource> dataSource = mDataSource; + sp<NuCachedSource2> cachedSource = mCachedSource; + sp<DataSource> httpSource = mHttpSource; + { + Mutex::Autolock _l(mDisconnectLock); + mDataSource.clear(); + mCachedSource.clear(); + mHttpSource.clear(); + } + } mBitrate = -1; cancelPollBuffering(); @@ -523,13 +531,20 @@ void NuPlayer::GenericSource::resume() { } void NuPlayer::GenericSource::disconnect() { - if (mDataSource != NULL) { + sp<DataSource> dataSource, httpSource; + { + Mutex::Autolock _l(mDisconnectLock); + dataSource = mDataSource; + httpSource = mHttpSource; + } + + if (dataSource != NULL) { // disconnect data source - if (mDataSource->flags() & DataSource::kIsCachingDataSource) { - static_cast<NuCachedSource2 *>(mDataSource.get())->disconnect(); + if (dataSource->flags() & DataSource::kIsCachingDataSource) { + static_cast<NuCachedSource2 *>(dataSource.get())->disconnect(); } - } else if (mHttpSource != NULL) { - static_cast<HTTPBase *>(mHttpSource.get())->disconnect(); + } else if (httpSource != NULL) { + static_cast<HTTPBase *>(httpSource.get())->disconnect(); } } |