diff options
| author | Eric Laurent <elaurent@google.com> | 2011-08-23 08:25:03 -0700 | 
|---|---|---|
| committer | Eric Laurent <elaurent@google.com> | 2011-08-23 08:25:03 -0700 | 
| commit | a1884f9e9ec3836683efd7eb333ee442e8bc9d56 (patch) | |
| tree | 08eb0f2c471d07c21a6b6590cadced3b60d79a5a /services | |
| parent | 2edd41583bb8c2b90c332980e0d1c34ae9ede34e (diff) | |
| download | frameworks_av-a1884f9e9ec3836683efd7eb333ee442e8bc9d56.zip frameworks_av-a1884f9e9ec3836683efd7eb333ee442e8bc9d56.tar.gz frameworks_av-a1884f9e9ec3836683efd7eb333ee442e8bc9d56.tar.bz2  | |
AudioFlinger: add check for audio HAL init failure
Do not call audio HAL functions on the primary HW interface
if it could not be initialized properly.
Change-Id: If54059c8fd188d6c1686f9e0439994fe9411478a
Diffstat (limited to 'services')
| -rw-r--r-- | services/audioflinger/AudioFlinger.cpp | 34 | 
1 files changed, 31 insertions, 3 deletions
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp index 941c9c8..744fa50 100644 --- a/services/audioflinger/AudioFlinger.cpp +++ b/services/audioflinger/AudioFlinger.cpp @@ -522,6 +522,11 @@ uint32_t AudioFlinger::latency(int output) const  status_t AudioFlinger::setMasterVolume(float value)  { +    status_t ret = initCheck(); +    if (ret != NO_ERROR) { +        return ret; +    } +      // check calling permissions      if (!settingsAllowed()) {          return PERMISSION_DENIED; @@ -547,7 +552,10 @@ status_t AudioFlinger::setMasterVolume(float value)  status_t AudioFlinger::setMode(int mode)  { -    status_t ret; +    status_t ret = initCheck(); +    if (ret != NO_ERROR) { +        return ret; +    }      // check calling permissions      if (!settingsAllowed()) { @@ -577,6 +585,11 @@ status_t AudioFlinger::setMode(int mode)  status_t AudioFlinger::setMicMute(bool state)  { +    status_t ret = initCheck(); +    if (ret != NO_ERROR) { +        return ret; +    } +      // check calling permissions      if (!settingsAllowed()) {          return PERMISSION_DENIED; @@ -584,13 +597,18 @@ status_t AudioFlinger::setMicMute(bool state)      AutoMutex lock(mHardwareLock);      mHardwareStatus = AUDIO_HW_SET_MIC_MUTE; -    status_t ret = mPrimaryHardwareDev->set_mic_mute(mPrimaryHardwareDev, state); +    ret = mPrimaryHardwareDev->set_mic_mute(mPrimaryHardwareDev, state);      mHardwareStatus = AUDIO_HW_IDLE;      return ret;  }  bool AudioFlinger::getMicMute() const  { +    status_t ret = initCheck(); +    if (ret != NO_ERROR) { +        return false; +    } +      bool state = AUDIO_MODE_INVALID;      mHardwareStatus = AUDIO_HW_GET_MIC_MUTE;      mPrimaryHardwareDev->get_mic_mute(mPrimaryHardwareDev, &state); @@ -814,6 +832,11 @@ String8 AudioFlinger::getParameters(int ioHandle, const String8& keys)  size_t AudioFlinger::getInputBufferSize(uint32_t sampleRate, int format, int channelCount)  { +    status_t ret = initCheck(); +    if (ret != NO_ERROR) { +        return 0; +    } +      return mPrimaryHardwareDev->get_input_buffer_size(mPrimaryHardwareDev, sampleRate, format, channelCount);  } @@ -834,6 +857,11 @@ unsigned int AudioFlinger::getInputFramesLost(int ioHandle)  status_t AudioFlinger::setVoiceVolume(float value)  { +    status_t ret = initCheck(); +    if (ret != NO_ERROR) { +        return ret; +    } +      // check calling permissions      if (!settingsAllowed()) {          return PERMISSION_DENIED; @@ -841,7 +869,7 @@ status_t AudioFlinger::setVoiceVolume(float value)      AutoMutex lock(mHardwareLock);      mHardwareStatus = AUDIO_SET_VOICE_VOLUME; -    status_t ret = mPrimaryHardwareDev->set_voice_volume(mPrimaryHardwareDev, value); +    ret = mPrimaryHardwareDev->set_voice_volume(mPrimaryHardwareDev, value);      mHardwareStatus = AUDIO_HW_IDLE;      return ret;  | 
