@@ -232,7 +232,7 @@ void AudioFlinger::onFirstRef()
232232 (NO_ERROR != dev->set_master_volume (dev, initialVolume))) {
233233 mMasterVolumeSupportLvl = MVS_NONE;
234234 }
235- mHardwareStatus = AUDIO_HW_INIT ;
235+ mHardwareStatus = AUDIO_HW_IDLE ;
236236 }
237237
238238 // Set the mode for each audio HAL, and try to set the initial volume (if
@@ -254,7 +254,7 @@ void AudioFlinger::onFirstRef()
254254 dev->set_master_volume (dev, initialVolume);
255255 }
256256
257- mHardwareStatus = AUDIO_HW_INIT ;
257+ mHardwareStatus = AUDIO_HW_IDLE ;
258258 }
259259 }
260260
@@ -823,8 +823,6 @@ bool AudioFlinger::streamMute(audio_stream_type_t stream) const
823823
824824status_t AudioFlinger::setParameters (audio_io_handle_t ioHandle, const String8& keyValuePairs)
825825{
826- status_t result;
827-
828826 ALOGV (" setParameters(): io %d, keyvalue %s, tid %d, calling pid %d" ,
829827 ioHandle, keyValuePairs.string (), gettid (), IPCThreadState::self ()->getCallingPid ());
830828 // check calling permissions
@@ -834,15 +832,17 @@ status_t AudioFlinger::setParameters(audio_io_handle_t ioHandle, const String8&
834832
835833 // ioHandle == 0 means the parameters are global to the audio hardware interface
836834 if (ioHandle == 0 ) {
837- AutoMutex lock (mHardwareLock );
838- mHardwareStatus = AUDIO_SET_PARAMETER;
839835 status_t final_result = NO_ERROR;
836+ {
837+ AutoMutex lock (mHardwareLock );
838+ mHardwareStatus = AUDIO_HW_SET_PARAMETER;
840839 for (size_t i = 0 ; i < mAudioHwDevs .size (); i++) {
841840 audio_hw_device_t *dev = mAudioHwDevs [i];
842- result = dev->set_parameters (dev, keyValuePairs.string ());
841+ status_t result = dev->set_parameters (dev, keyValuePairs.string ());
843842 final_result = result ?: final_result;
844843 }
845844 mHardwareStatus = AUDIO_HW_IDLE;
845+ }
846846 // disable AEC and NS if the device is a BT SCO headset supporting those pre processings
847847 AudioParameter param = AudioParameter (keyValuePairs);
848848 String8 value;
@@ -905,8 +905,14 @@ String8 AudioFlinger::getParameters(audio_io_handle_t ioHandle, const String8& k
905905 String8 out_s8;
906906
907907 for (size_t i = 0 ; i < mAudioHwDevs .size (); i++) {
908+ char *s;
909+ {
910+ AutoMutex lock (mHardwareLock );
911+ mHardwareStatus = AUDIO_HW_GET_PARAMETER;
908912 audio_hw_device_t *dev = mAudioHwDevs [i];
909- char *s = dev->get_parameters (dev, keys.string ());
913+ s = dev->get_parameters (dev, keys.string ());
914+ mHardwareStatus = AUDIO_HW_IDLE;
915+ }
910916 out_s8 += String8 (s ? s : " " );
911917 free (s);
912918 }
@@ -968,7 +974,7 @@ status_t AudioFlinger::setVoiceVolume(float value)
968974 }
969975
970976 AutoMutex lock (mHardwareLock );
971- mHardwareStatus = AUDIO_SET_VOICE_VOLUME ;
977+ mHardwareStatus = AUDIO_HW_SET_VOICE_VOLUME ;
972978 ret = mPrimaryHardwareDev ->set_voice_volume (mPrimaryHardwareDev , value);
973979 mHardwareStatus = AUDIO_HW_IDLE;
974980
@@ -5431,7 +5437,6 @@ audio_io_handle_t AudioFlinger::openOutput(uint32_t *pDevices,
54315437{
54325438 status_t status;
54335439 PlaybackThread *thread = NULL ;
5434- mHardwareStatus = AUDIO_HW_OUTPUT_OPEN;
54355440 uint32_t samplingRate = pSamplingRate ? *pSamplingRate : 0 ;
54365441 audio_format_t format = pFormat ? *pFormat : AUDIO_FORMAT_DEFAULT;
54375442 uint32_t channels = pChannels ? *pChannels : 0 ;
@@ -5456,16 +5461,17 @@ audio_io_handle_t AudioFlinger::openOutput(uint32_t *pDevices,
54565461 if (outHwDev == NULL )
54575462 return 0 ;
54585463
5464+ mHardwareStatus = AUDIO_HW_OUTPUT_OPEN;
54595465 status = outHwDev->open_output_stream (outHwDev, *pDevices, &format,
54605466 &channels, &samplingRate, &outStream);
5467+ mHardwareStatus = AUDIO_HW_IDLE;
54615468 ALOGV (" openOutput() openOutputStream returned output %p, SamplingRate %d, Format %d, Channels %x, status %d" ,
54625469 outStream,
54635470 samplingRate,
54645471 format,
54655472 channels,
54665473 status);
54675474
5468- mHardwareStatus = AUDIO_HW_IDLE;
54695475 if (outStream != NULL ) {
54705476 AudioStreamOut *output = new AudioStreamOut (outHwDev, outStream);
54715477 audio_io_handle_t id = nextUniqueId ();
0 commit comments