summaryrefslogtreecommitdiffstats
path: root/services/audiopolicy/AudioPolicyService.cpp
diff options
context:
space:
mode:
authorRicardo Garcia <rago@google.com>2014-07-24 15:48:24 -0700
committerRicardo Garcia <rago@google.com>2014-07-24 17:22:40 -0700
commit05f2fdc1070c1c07af9e21760d4d2e06bebde55a (patch)
tree2d5f2db1f724005f976ad5bd1b9d5764d687e024 /services/audiopolicy/AudioPolicyService.cpp
parent81e50d0c782cc18eab4ef40ecd6c7f36df50fea5 (diff)
downloadframeworks_av-05f2fdc1070c1c07af9e21760d4d2e06bebde55a.zip
frameworks_av-05f2fdc1070c1c07af9e21760d4d2e06bebde55a.tar.gz
frameworks_av-05f2fdc1070c1c07af9e21760d4d2e06bebde55a.tar.bz2
-Making sure mAudioCommands list is empty before going to sleep.
-Wake_lock release before sleeping or quitting threadLoop(). Change-Id: Icab53d7984a3ba3eaf13e514667b4d60f40cbcd6
Diffstat (limited to 'services/audiopolicy/AudioPolicyService.cpp')
-rw-r--r--services/audiopolicy/AudioPolicyService.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/services/audiopolicy/AudioPolicyService.cpp b/services/audiopolicy/AudioPolicyService.cpp
index ae9cc35..7f14960 100644
--- a/services/audiopolicy/AudioPolicyService.cpp
+++ b/services/audiopolicy/AudioPolicyService.cpp
@@ -514,21 +514,23 @@ bool AudioPolicyService::AudioCommandThread::threadLoop()
break;
}
}
- // release delayed commands wake lock
- if (mAudioCommands.isEmpty()) {
- release_wake_lock(mName.string());
- }
// release mLock before releasing strong reference on the service as
// AudioPolicyService destructor calls AudioCommandThread::exit() which acquires mLock.
mLock.unlock();
svc.clear();
mLock.lock();
- if (!exitPending()) {
+ if (!exitPending() && mAudioCommands.isEmpty()) {
+ // release delayed commands wake lock
+ release_wake_lock(mName.string());
ALOGV("AudioCommandThread() going to sleep");
mWaitWorkCV.waitRelative(mLock, waitTime);
ALOGV("AudioCommandThread() waking up");
}
}
+ // release delayed commands wake lock before quitting
+ if (!mAudioCommands.isEmpty()) {
+ release_wake_lock(mName.string());
+ }
mLock.unlock();
return false;
}