summaryrefslogtreecommitdiffstats
path: root/audio
diff options
context:
space:
mode:
authorSimon Wilson <simonwilson@google.com>2011-10-06 15:33:55 -0700
committerSimon Wilson <simonwilson@google.com>2011-10-06 19:18:31 -0700
commitcabd4789d8006b3d0217cef731e813211b298de1 (patch)
treecb15a8ce42ae1a3b64ac49e0ba611c821b8d54b5 /audio
parent57fc94f83fa72e220bc33bad3fcac1a25f9e6780 (diff)
downloaddevice_samsung_tuna-cabd4789d8006b3d0217cef731e813211b298de1.zip
device_samsung_tuna-cabd4789d8006b3d0217cef731e813211b298de1.tar.gz
device_samsung_tuna-cabd4789d8006b3d0217cef731e813211b298de1.tar.bz2
audio: add locks, only tear down PCMs when needed for WB AMR
Change-Id: I03ba325b613aef21dba8d16187aaccca08d2a328
Diffstat (limited to 'audio')
-rwxr-xr-xaudio/audio_hw.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/audio/audio_hw.c b/audio/audio_hw.c
index e70f767..e954fbe 100755
--- a/audio/audio_hw.c
+++ b/audio/audio_hw.c
@@ -623,13 +623,18 @@ static void end_call(struct tuna_audio_device *adev)
void audio_set_wb_amr_callback(void *data, int enable)
{
struct tuna_audio_device *adev = (struct tuna_audio_device *)data;
- adev->wb_amr = enable;
- /* reopen the modem PCMs at the new rate */
- if (adev->in_call) {
- end_call(adev);
- start_call(adev);
+ pthread_mutex_lock(&adev->lock);
+ if (adev->wb_amr != enable) {
+ adev->wb_amr = enable;
+
+ /* reopen the modem PCMs at the new rate */
+ if (adev->in_call) {
+ end_call(adev);
+ start_call(adev);
+ }
}
+ pthread_mutex_unlock(&adev->lock);
}
static void set_incall_device(struct tuna_audio_device *adev)