diff options
author | Dave Burke <daveburke@google.com> | 2011-10-17 18:36:48 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-10-17 18:36:48 -0700 |
commit | 89770b4c942a2cf0bc2cba2a7a182a10d17b21b5 (patch) | |
tree | 6a4a2ad428027a051f28a102a8fdb512c8d2e364 /media | |
parent | 2bfdd428c56c7524d1a11979f200a1762866032d (diff) | |
parent | a038c14efdaa118e2d8c5b42584cb0bb5f3b2ec7 (diff) | |
download | frameworks_av-89770b4c942a2cf0bc2cba2a7a182a10d17b21b5.zip frameworks_av-89770b4c942a2cf0bc2cba2a7a182a10d17b21b5.tar.gz frameworks_av-89770b4c942a2cf0bc2cba2a7a182a10d17b21b5.tar.bz2 |
am 6f13adb2: Merge "Don\'t hold onto the lock while reconnecting to the server" into ics-mr0
* commit '6f13adb22afcb47a1cd45a90eaa3c154522089d4':
Don't hold onto the lock while reconnecting to the server
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/NuCachedSource2.cpp | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/media/libstagefright/NuCachedSource2.cpp b/media/libstagefright/NuCachedSource2.cpp index 4f183f5..1e1de04 100644 --- a/media/libstagefright/NuCachedSource2.cpp +++ b/media/libstagefright/NuCachedSource2.cpp @@ -279,6 +279,8 @@ void NuCachedSource2::onMessageReceived(const sp<AMessage> &msg) { void NuCachedSource2::fetchInternal() { LOGV("fetchInternal"); + bool reconnect = false; + { Mutex::Autolock autoLock(mLock); CHECK(mFinalStatus == OK || mNumRetriesLeft > 0); @@ -286,18 +288,24 @@ void NuCachedSource2::fetchInternal() { if (mFinalStatus != OK) { --mNumRetriesLeft; - status_t err = - mSource->reconnectAtOffset(mCacheOffset + mCache->totalSize()); + reconnect = true; + } + } - if (err == ERROR_UNSUPPORTED) { - mNumRetriesLeft = 0; - return; - } else if (err != OK) { - LOGI("The attempt to reconnect failed, %d retries remaining", - mNumRetriesLeft); + if (reconnect) { + status_t err = + mSource->reconnectAtOffset(mCacheOffset + mCache->totalSize()); - return; - } + Mutex::Autolock autoLock(mLock); + + if (err == ERROR_UNSUPPORTED) { + mNumRetriesLeft = 0; + return; + } else if (err != OK) { + LOGI("The attempt to reconnect failed, %d retries remaining", + mNumRetriesLeft); + + return; } } |