@@ -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
@@ -822,8 +822,6 @@ bool AudioFlinger::streamMute(audio_stream_type_t stream) const
822822
823823status_t AudioFlinger::setParameters (audio_io_handle_t ioHandle, const String8& keyValuePairs)
824824{
825- status_t result;
826-
827825 ALOGV (" setParameters(): io %d, keyvalue %s, tid %d, calling pid %d" ,
828826 ioHandle, keyValuePairs.string (), gettid (), IPCThreadState::self ()->getCallingPid ());
829827 // check calling permissions
@@ -833,15 +831,17 @@ status_t AudioFlinger::setParameters(audio_io_handle_t ioHandle, const String8&
833831
834832 // ioHandle == 0 means the parameters are global to the audio hardware interface
835833 if (ioHandle == 0 ) {
836- AutoMutex lock (mHardwareLock );
837- mHardwareStatus = AUDIO_SET_PARAMETER;
838834 status_t final_result = NO_ERROR;
835+ {
836+ AutoMutex lock (mHardwareLock );
837+ mHardwareStatus = AUDIO_HW_SET_PARAMETER;
839838 for (size_t i = 0 ; i < mAudioHwDevs .size (); i++) {
840839 audio_hw_device_t *dev = mAudioHwDevs [i];
841- result = dev->set_parameters (dev, keyValuePairs.string ());
840+ status_t result = dev->set_parameters (dev, keyValuePairs.string ());
842841 final_result = result ?: final_result;
843842 }
844843 mHardwareStatus = AUDIO_HW_IDLE;
844+ }
845845 // disable AEC and NS if the device is a BT SCO headset supporting those pre processings
846846 AudioParameter param = AudioParameter (keyValuePairs);
847847 String8 value;
@@ -904,8 +904,14 @@ String8 AudioFlinger::getParameters(audio_io_handle_t ioHandle, const String8& k
904904 String8 out_s8;
905905
906906 for (size_t i = 0 ; i < mAudioHwDevs .size (); i++) {
907+ char *s;
908+ {
909+ AutoMutex lock (mHardwareLock );
910+ mHardwareStatus = AUDIO_HW_GET_PARAMETER;
907911 audio_hw_device_t *dev = mAudioHwDevs [i];
908- char *s = dev->get_parameters (dev, keys.string ());
912+ s = dev->get_parameters (dev, keys.string ());
913+ mHardwareStatus = AUDIO_HW_IDLE;
914+ }
909915 out_s8 += String8 (s ? s : " " );
910916 free (s);
911917 }
@@ -967,7 +973,7 @@ status_t AudioFlinger::setVoiceVolume(float value)
967973 }
968974
969975 AutoMutex lock (mHardwareLock );
970- mHardwareStatus = AUDIO_SET_VOICE_VOLUME ;
976+ mHardwareStatus = AUDIO_HW_SET_VOICE_VOLUME ;
971977 ret = mPrimaryHardwareDev ->set_voice_volume (mPrimaryHardwareDev , value);
972978 mHardwareStatus = AUDIO_HW_IDLE;
973979
@@ -5429,7 +5435,6 @@ audio_io_handle_t AudioFlinger::openOutput(uint32_t *pDevices,
54295435{
54305436 status_t status;
54315437 PlaybackThread *thread = NULL ;
5432- mHardwareStatus = AUDIO_HW_OUTPUT_OPEN;
54335438 uint32_t samplingRate = pSamplingRate ? *pSamplingRate : 0 ;
54345439 audio_format_t format = pFormat ? *pFormat : AUDIO_FORMAT_DEFAULT;
54355440 uint32_t channels = pChannels ? *pChannels : 0 ;
@@ -5454,16 +5459,17 @@ audio_io_handle_t AudioFlinger::openOutput(uint32_t *pDevices,
54545459 if (outHwDev == NULL )
54555460 return 0 ;
54565461
5462+ mHardwareStatus = AUDIO_HW_OUTPUT_OPEN;
54575463 status = outHwDev->open_output_stream (outHwDev, *pDevices, &format,
54585464 &channels, &samplingRate, &outStream);
5465+ mHardwareStatus = AUDIO_HW_IDLE;
54595466 ALOGV (" openOutput() openOutputStream returned output %p, SamplingRate %d, Format %d, Channels %x, status %d" ,
54605467 outStream,
54615468 samplingRate,
54625469 format,
54635470 channels,
54645471 status);
54655472
5466- mHardwareStatus = AUDIO_HW_IDLE;
54675473 if (outStream != NULL ) {
54685474 AudioStreamOut *output = new AudioStreamOut (outHwDev, outStream);
54695475 audio_io_handle_t id = nextUniqueId ();
0 commit comments