| Index: chrome/browser/chromeos/audio_mixer_alsa.cc
|
| diff --git a/chrome/browser/chromeos/audio_mixer_alsa.cc b/chrome/browser/chromeos/audio_mixer_alsa.cc
|
| index b9fd33e909368e1efdc9b3f8ac4b225b58b9f051..f257af828dce61f510bdea8a949f5ca64142d15d 100644
|
| --- a/chrome/browser/chromeos/audio_mixer_alsa.cc
|
| +++ b/chrome/browser/chromeos/audio_mixer_alsa.cc
|
| @@ -26,7 +26,6 @@ typedef long alsa_long_t; // 'long' is required for ALSA API calls.
|
| using std::max;
|
| using std::min;
|
| using std::string;
|
| -using std::vector;
|
|
|
| namespace chromeos {
|
|
|
| @@ -35,12 +34,11 @@ namespace {
|
| // Name of the ALSA card to which we connect.
|
| const char kCardName[] = "default";
|
|
|
| -// Mixer element names. We try to connect to the preferred master element
|
| -// first; if it doesn't exist, we'll control any of the alternates that exist.
|
| -const char kPreferredMasterElementName[] = "Master";
|
| -const char* const kAlternateMasterElementNames[] = {
|
| - "Headphone",
|
| - "Speaker",
|
| +// Mixer element names. We'll use the first master element from the list that
|
| +// exists.
|
| +const char* const kMasterElementNames[] = {
|
| + "Master", // x86
|
| + "Digital", // ARM
|
| };
|
| const char kPCMElementName[] = "PCM";
|
|
|
| @@ -240,22 +238,16 @@ bool AudioMixerAlsa::ConnectInternal() {
|
| double min_volume_db = kDefaultMinVolumeDb;
|
| double max_volume_db = kDefaultMaxVolumeDb;
|
|
|
| - vector<snd_mixer_elem_t*> master_elements;
|
| - snd_mixer_elem_t* element =
|
| - FindElementWithName(handle, kPreferredMasterElementName);
|
| - if (element) {
|
| - master_elements.push_back(element);
|
| - } else {
|
| - for (size_t i = 0; i < arraysize(kAlternateMasterElementNames); ++i) {
|
| - element = FindElementWithName(handle, kAlternateMasterElementNames[i]);
|
| - if (element)
|
| - master_elements.push_back(element);
|
| - }
|
| + snd_mixer_elem_t* master_element = NULL;
|
| + for (size_t i = 0; i < arraysize(kMasterElementNames); ++i) {
|
| + master_element = FindElementWithName(handle, kMasterElementNames[i]);
|
| + if (master_element)
|
| + break;
|
| }
|
|
|
| - if (master_elements.empty()) {
|
| + if (!master_element) {
|
| if (num_connection_attempts_ == kConnectionAttemptToLogFailure)
|
| - LOG(WARNING) << "Unable to find any mixer elements on " << kCardName;
|
| + LOG(WARNING) << "Unable to find a master element on " << kCardName;
|
| snd_mixer_close(handle);
|
| return false;
|
| }
|
| @@ -263,7 +255,7 @@ bool AudioMixerAlsa::ConnectInternal() {
|
| alsa_long_t long_low = static_cast<alsa_long_t>(kDefaultMinVolumeDb * 100);
|
| alsa_long_t long_high = static_cast<alsa_long_t>(kDefaultMaxVolumeDb * 100);
|
| err = snd_mixer_selem_get_playback_dB_range(
|
| - master_elements.at(0), &long_low, &long_high);
|
| + master_element, &long_low, &long_high);
|
| if (err != 0) {
|
| if (num_connection_attempts_ == kConnectionAttemptToLogFailure)
|
| LOG(WARNING) << "snd_mixer_selem_get_playback_dB_range() failed:"
|
| @@ -296,7 +288,7 @@ bool AudioMixerAlsa::ConnectInternal() {
|
| {
|
| base::AutoLock lock(lock_);
|
| alsa_mixer_ = handle;
|
| - master_elements_.swap(master_elements);
|
| + master_element_ = master_element;
|
| pcm_element_ = pcm_element;
|
| min_volume_db_ = min_volume_db;
|
| max_volume_db_ = max_volume_db;
|
| @@ -334,24 +326,18 @@ void AudioMixerAlsa::ApplyState() {
|
| // If a PCM volume slider exists, then first set the Master volume to the
|
| // nearest volume >= requested volume, then adjust PCM volume down to get
|
| // closer to the requested volume.
|
| - for (vector<snd_mixer_elem_t*>::iterator it = master_elements_.begin();
|
| - it != master_elements_.end(); ++it)
|
| - SetElementVolume(*it, new_volume_db, 0.9999f);
|
| + SetElementVolume(master_element_, new_volume_db, 0.9999f);
|
|
|
| double pcm_volume_db = 0.0;
|
| double master_volume_db = 0.0;
|
| - if (GetElementVolume(master_elements_.at(0), &master_volume_db))
|
| + if (GetElementVolume(master_element_, &master_volume_db))
|
| pcm_volume_db = new_volume_db - master_volume_db;
|
| SetElementVolume(pcm_element_, pcm_volume_db, 0.5f);
|
| } else {
|
| - for (vector<snd_mixer_elem_t*>::iterator it = master_elements_.begin();
|
| - it != master_elements_.end(); ++it)
|
| - SetElementVolume(*it, new_volume_db, 0.5f);
|
| + SetElementVolume(master_element_, new_volume_db, 0.5f);
|
| }
|
|
|
| - for (vector<snd_mixer_elem_t*>::iterator it = master_elements_.begin();
|
| - it != master_elements_.end(); ++it)
|
| - SetElementMuted(*it, should_mute);
|
| + SetElementMuted(master_element_, should_mute);
|
| }
|
|
|
| snd_mixer_elem_t* AudioMixerAlsa::FindElementWithName(
|
|
|