diff options
Diffstat (limited to 'hal')
-rw-r--r-- | hal/audio_hw.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/hal/audio_hw.c b/hal/audio_hw.c index cba2e10..1e3bb91 100644 --- a/hal/audio_hw.c +++ b/hal/audio_hw.c @@ -6284,12 +6284,10 @@ static int adev_verify_devices(struct audio_device *adev) static int adev_close(hw_device_t *device) { size_t i; - struct audio_device *adev_temp = (struct audio_device *)device; - - if (!adev_temp) - return 0; pthread_mutex_lock(&adev_init_lock); + if (!device || ((struct audio_device *)device != adev)) + goto done; if ((--audio_device_ref_count) == 0) { audio_extn_snd_mon_unregister_listener(adev); @@ -6308,10 +6306,11 @@ static int adev_close(hw_device_t *device) adev->adm_deinit(adev->adm_data); pthread_mutex_destroy(&adev->lock); free(device); + adev = NULL; } +done: pthread_mutex_unlock(&adev_init_lock); - return 0; } |