hal: fix race condition between sthal and ahal

When SSR happens the callbacks between sthal and ahal
are called within each context aquiring the locks resulting
in race condition. Fixed by removing lock before calling
the sthal callback.

Change-Id: I6cd88d25758f9c0a6ca39141df6629e2f8b6c0c5
This commit is contained in:
Bharath Ramachandramurthy 2014-10-21 11:18:49 -07:00
parent 8f0b1432f8
commit 5baa6a5f7f
1 changed files with 1 additions and 1 deletions

View File

@ -139,12 +139,12 @@ void audio_extn_sound_trigger_stop_lab(struct stream_in *in)
pthread_mutex_lock(&st_dev->lock); pthread_mutex_lock(&st_dev->lock);
st_ses_info = get_sound_trigger_info(in->capture_handle); st_ses_info = get_sound_trigger_info(in->capture_handle);
pthread_mutex_unlock(&st_dev->lock);
if (st_ses_info) { if (st_ses_info) {
event.u.ses_info = st_ses_info->st_ses; event.u.ses_info = st_ses_info->st_ses;
ALOGV("%s: AUDIO_EVENT_STOP_LAB pcm %p", __func__, st_ses_info->st_ses.pcm); ALOGV("%s: AUDIO_EVENT_STOP_LAB pcm %p", __func__, st_ses_info->st_ses.pcm);
st_dev->st_callback(AUDIO_EVENT_STOP_LAB, &event); st_dev->st_callback(AUDIO_EVENT_STOP_LAB, &event);
} }
pthread_mutex_unlock(&st_dev->lock);
} }
void audio_extn_sound_trigger_check_and_get_session(struct stream_in *in) void audio_extn_sound_trigger_check_and_get_session(struct stream_in *in)
{ {