summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorDave Burke <daveburke@google.com>2011-10-17 18:36:48 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-10-17 18:36:48 -0700
commit89770b4c942a2cf0bc2cba2a7a182a10d17b21b5 (patch)
tree6a4a2ad428027a051f28a102a8fdb512c8d2e364 /media
parent2bfdd428c56c7524d1a11979f200a1762866032d (diff)
parenta038c14efdaa118e2d8c5b42584cb0bb5f3b2ec7 (diff)
downloadframeworks_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.cpp28
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;
}
}