summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorZach Jang <zachjang@google.com>2015-10-27 02:30:56 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-10-27 02:30:56 +0000
commit681bc45d2592ed447f70d1dd14e92ad584499c9d (patch)
treeefba41c92e0e58ebd643dbe672147c879ac014a3 /services
parent6919fbe40d92af432d3b72ad36e0697654f8146c (diff)
parent3994ffdd2c280aa5fad9f3c41255371cd545c7cf (diff)
downloadframeworks_av-681bc45d2592ed447f70d1dd14e92ad584499c9d.zip
frameworks_av-681bc45d2592ed447f70d1dd14e92ad584499c9d.tar.gz
frameworks_av-681bc45d2592ed447f70d1dd14e92ad584499c9d.tar.bz2
Merge "Revert "Revert "audio policy: bind setMode() and setPhoneState() operations""" into mnc-dev
Diffstat (limited to 'services')
-rw-r--r--services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
index 793c26a..ca365a5 100644
--- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
+++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
@@ -76,10 +76,14 @@ status_t AudioPolicyService::setPhoneState(audio_mode_t state)
ALOGV("setPhoneState()");
+ // acquire lock before calling setMode() so that setMode() + setPhoneState() are an atomic
+ // operation from policy manager standpoint (no other operation (e.g track start or stop)
+ // can be interleaved).
+ Mutex::Autolock _l(mLock);
+
// TODO: check if it is more appropriate to do it in platform specific policy manager
AudioSystem::setMode(state);
- Mutex::Autolock _l(mLock);
mAudioPolicyManager->setPhoneState(state);
mPhoneState = state;
return NO_ERROR;