From 996da01c08a2d168f13d63032de91f9ac21e4cd0 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Fri, 15 Jun 2012 14:49:21 -0700 Subject: audio: acquire lock in adev_set_voice_volume() Acquire the audio device mutex before calling into ril library in adev_set_voice_volume() to avoid concurrency with other calls to ril from select_mode() or set_incall_device(). Bug 6626532. Change-Id: I2347477b39ce46137a654047266b70dd691c021c --- audio/audio_hw.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'audio') diff --git a/audio/audio_hw.c b/audio/audio_hw.c index 74f2383..d377f2b 100644 --- a/audio/audio_hw.c +++ b/audio/audio_hw.c @@ -1142,7 +1142,7 @@ static void select_mode(struct tuna_audio_device *adev) adev->devices &= ~AUDIO_DEVICE_OUT_SPEAKER; select_output_device(adev); start_call(adev); - adev_set_voice_volume(&adev->hw_device, adev->voice_volume); + ril_set_call_volume(&adev->ril, SOUND_TYPE_VOICE, adev->voice_volume); adev->in_call = 1; } } else { @@ -3408,11 +3408,13 @@ static int adev_set_voice_volume(struct audio_hw_device *dev, float volume) { struct tuna_audio_device *adev = (struct tuna_audio_device *)dev; + pthread_mutex_lock(&adev->lock); adev->voice_volume = volume; if (adev->mode == AUDIO_MODE_IN_CALL) ril_set_call_volume(&adev->ril, SOUND_TYPE_VOICE, volume); + pthread_mutex_unlock(&adev->lock); return 0; } -- cgit v1.1