diff --git a/libs/audioflinger/AudioFlinger.cpp b/libs/audioflinger/AudioFlinger.cpp
index 57a53bd..5652b28 100644
--- a/libs/audioflinger/AudioFlinger.cpp
+++ b/libs/audioflinger/AudioFlinger.cpp
@@ -837,12 +837,12 @@
 }
 
 #ifdef WITH_A2DP
-void AudioFlinger::handleStreamDisablesA2dp(int command)
+// handleStreamDisablesA2dp_l() must be called with AudioFlinger::mLock held
+void AudioFlinger::handleStreamDisablesA2dp_l(int command)
 {
     switch(command) {
     case ACTIVE_TRACK_ADDED:
         {
-            AutoMutex lock(mHardwareLock);
             if (mA2dpDisableCount++ == 0) {
                 if (mA2dpEnabled) {
                     setA2dpEnabled_l(false);
@@ -854,8 +854,7 @@
         break;
     case ACTIVE_TRACK_REMOVED:
         {
-            AutoMutex lock(mHardwareLock);
-            if (mA2dpDisableCount > 0){
+            if (mA2dpDisableCount > 0) {
                 if (--mA2dpDisableCount == 0) {
                     if (mA2dpSuppressed) {
                         setA2dpEnabled_l(true);
@@ -1502,8 +1501,10 @@
             mAudioFlinger->handleForcedSpeakerRoute(ACTIVE_TRACK_ADDED);
         }        
 #ifdef WITH_A2DP
+        // AudioFlinger::mLock must be locked before calling
+        // handleStreamDisablesA2dp_l because it calls setA2dpEnabled_l().
         if (streamDisablesA2dp(track->type())) {
-            mAudioFlinger->handleStreamDisablesA2dp(ACTIVE_TRACK_ADDED);
+            mAudioFlinger->handleStreamDisablesA2dp_l(ACTIVE_TRACK_ADDED);
         }
 #endif
     }
@@ -1524,8 +1525,10 @@
             mAudioFlinger->handleForcedSpeakerRoute(ACTIVE_TRACK_REMOVED);
         }
 #ifdef WITH_A2DP
+        // AudioFlinger::mLock must be locked before calling
+        // handleStreamDisablesA2dp_l because it calls setA2dpEnabled_l().
         if (streamDisablesA2dp(track->type())) {
-            mAudioFlinger->handleStreamDisablesA2dp(ACTIVE_TRACK_REMOVED);
+            mAudioFlinger->handleStreamDisablesA2dp_l(ACTIVE_TRACK_REMOVED);
         }
 #endif
     }
@@ -2476,8 +2479,15 @@
     mRecordTrack = recordTrack;
 
 #ifdef WITH_A2DP
-    if (streamDisablesA2dp(recordTrack->type())) {
-        mAudioFlinger->handleStreamDisablesA2dp(ACTIVE_TRACK_ADDED);
+    { // scope for lock2
+
+        // AudioFlinger::mLock must be locked before calling
+        // handleStreamDisablesA2dp_l because it calls setA2dpEnabled_l().
+        AutoMutex lock2(&mAudioFlinger->mLock);
+
+        // Currently there is no way to detect if we are recording over SCO,
+        // so we disable A2DP during any recording.
+        mAudioFlinger->handleStreamDisablesA2dp_l(ACTIVE_TRACK_ADDED);
     }
 #endif
 
@@ -2494,8 +2504,15 @@
     AutoMutex lock(&mLock);
     if (mActive && (recordTrack == mRecordTrack.get())) {
 #ifdef WITH_A2DP
-        if (streamDisablesA2dp(recordTrack->type())) {
-            mAudioFlinger->handleStreamDisablesA2dp(ACTIVE_TRACK_REMOVED);
+        { // scope for lock2
+    
+            // AudioFlinger::mLock must be locked before calling
+            // handleStreamDisablesA2dp_l because it calls setA2dpEnabled_l().
+            AutoMutex lock2(&mAudioFlinger->mLock);
+
+            // Currently there is no way to detect if we are recording over SCO,
+            // so we disable A2DP during any recording.
+            mAudioFlinger->handleStreamDisablesA2dp_l(ACTIVE_TRACK_REMOVED);
         }
 #endif
         mActive = false;
