Skip to content

Commit fa28f57

Browse files
gkastenAndroid (Google) Code Review
authored andcommitted
Merge "Fix tracking of hardware state for dump"
2 parents c7d47ec + 23c9c74 commit fa28f57

File tree

2 files changed

+37
-29
lines changed

2 files changed

+37
-29
lines changed

services/audioflinger/AudioFlinger.cpp

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

824824
status_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();

services/audioflinger/AudioFlinger.h

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1531,25 +1531,27 @@ mutable Mutex mLock; // mutex for process, commands and handl
15311531
audio_hw_device_t* mPrimaryHardwareDev; // mAudioHwDevs[0] or NULL
15321532
Vector<audio_hw_device_t*> mAudioHwDevs;
15331533

1534+
// for dump, indicates which hardware operation is currently in progress (but not stream ops)
15341535
enum hardware_call_state {
1535-
AUDIO_HW_IDLE = 0,
1536-
AUDIO_HW_INIT,
1537-
AUDIO_HW_OUTPUT_OPEN,
1538-
AUDIO_HW_OUTPUT_CLOSE,
1539-
AUDIO_HW_INPUT_OPEN,
1540-
AUDIO_HW_INPUT_CLOSE,
1541-
AUDIO_HW_STANDBY,
1542-
AUDIO_HW_SET_MASTER_VOLUME,
1543-
AUDIO_HW_GET_ROUTING,
1544-
AUDIO_HW_SET_ROUTING,
1545-
AUDIO_HW_GET_MODE,
1546-
AUDIO_HW_SET_MODE,
1547-
AUDIO_HW_GET_MIC_MUTE,
1548-
AUDIO_HW_SET_MIC_MUTE,
1549-
AUDIO_SET_VOICE_VOLUME,
1550-
AUDIO_SET_PARAMETER,
1551-
AUDIO_HW_GET_INPUT_BUFFER_SIZE,
1552-
AUDIO_HW_GET_MASTER_VOLUME,
1536+
AUDIO_HW_IDLE = 0, // no operation in progress
1537+
AUDIO_HW_INIT, // init_check
1538+
AUDIO_HW_OUTPUT_OPEN, // open_output_stream
1539+
AUDIO_HW_OUTPUT_CLOSE, // unused
1540+
AUDIO_HW_INPUT_OPEN, // unused
1541+
AUDIO_HW_INPUT_CLOSE, // unused
1542+
AUDIO_HW_STANDBY, // unused
1543+
AUDIO_HW_SET_MASTER_VOLUME, // set_master_volume
1544+
AUDIO_HW_GET_ROUTING, // unused
1545+
AUDIO_HW_SET_ROUTING, // unused
1546+
AUDIO_HW_GET_MODE, // unused
1547+
AUDIO_HW_SET_MODE, // set_mode
1548+
AUDIO_HW_GET_MIC_MUTE, // get_mic_mute
1549+
AUDIO_HW_SET_MIC_MUTE, // set_mic_mute
1550+
AUDIO_HW_SET_VOICE_VOLUME, // set_voice_volume
1551+
AUDIO_HW_SET_PARAMETER, // set_parameters
1552+
AUDIO_HW_GET_INPUT_BUFFER_SIZE, // get_input_buffer_size
1553+
AUDIO_HW_GET_MASTER_VOLUME, // get_master_volume
1554+
AUDIO_HW_GET_PARAMETER, // get_parameters
15531555
};
15541556

15551557
mutable hardware_call_state mHardwareStatus; // for dump only

0 commit comments

Comments
 (0)