audio: End voice call in set_mode()
authorChristopher N. Hesse <raymanfx@gmail.com>
Fri, 17 Nov 2017 19:41:11 +0000 (20:41 +0100)
committerChristopher N. Hesse <raymanfx@gmail.com>
Sat, 20 Jan 2018 22:31:42 +0000 (22:31 +0000)
Previously, we would only end the voice call once the next output
stream happened (and parameters would be set).

Change-Id: Id0d2711605e57ad69d9b26b36afb562444349358
(cherry picked from commit 5169e86c10b7429b01d6ab0500a0509141dcbfe1)

audio/audio_hw.c

index 0f8a2a6fd556375b2cb4d77b593a1dd97698d450..169f5c7e0ebf64a400bc3c9e517a052436429897 100644 (file)
@@ -2942,10 +2942,6 @@ static int out_set_parameters(struct audio_stream *stream, const char *kvpairs)
             }
         }
 
-        if ((adev->mode == AUDIO_MODE_NORMAL) && adev->voice.in_call &&
-                (out == adev->primary_output)) {
-            stop_voice_call(adev);
-        }
         pthread_mutex_unlock(&adev->lock);
         pthread_mutex_unlock(&out->lock);
 #ifdef PREPROCESSING_ENABLED
@@ -4278,6 +4274,10 @@ static int adev_set_mode(struct audio_hw_device *dev, audio_mode_t mode)
             ALOGE("Failed setting amplifier mode");
         }
         adev->mode = mode;
+
+        if ((mode == AUDIO_MODE_NORMAL) && adev->voice.in_call) {
+            stop_voice_call(adev);
+        }
     }
     pthread_mutex_unlock(&adev->lock);
     return 0;