OLD | NEW |
---|---|
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chromeos/audio/cras_audio_handler.h" | 5 #include "chromeos/audio/cras_audio_handler.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
369 // Set all active devices to the same volume. | 369 // Set all active devices to the same volume. |
370 for (AudioDeviceMap::const_iterator it = audio_devices_.begin(); | 370 for (AudioDeviceMap::const_iterator it = audio_devices_.begin(); |
371 it != audio_devices_.end(); | 371 it != audio_devices_.end(); |
372 it++) { | 372 it++) { |
373 const AudioDevice& device = it->second; | 373 const AudioDevice& device = it->second; |
374 if (!device.is_input && device.active) | 374 if (!device.is_input && device.active) |
375 SetOutputNodeVolumePercent(device.id, volume_percent); | 375 SetOutputNodeVolumePercent(device.id, volume_percent); |
376 } | 376 } |
377 } | 377 } |
378 | 378 |
379 void CrasAudioHandler::SetOutputVolumePercentInternally(int volume_percent) { | |
jennyz
2016/07/28 21:10:05
Please add a unit test for this new API.
Qiang(Joe) Xu
2016/07/28 23:15:57
Done.
| |
380 volume_internally_changed_ = true; | |
jennyz
2016/07/28 21:02:17
Will it be possible for SetOutputVolumePercentInte
Qiang(Joe) Xu
2016/07/28 23:15:57
Currently only maximize mode screenshot calls this
| |
381 // Set all active devices to the same volume. | |
382 for (AudioDeviceMap::const_iterator it = audio_devices_.begin(); | |
383 it != audio_devices_.end(); it++) { | |
384 const AudioDevice& device = it->second; | |
385 if (!device.is_input && device.active) | |
386 SetOutputNodeVolumePercent(device.id, volume_percent); | |
387 } | |
jennyz
2016/07/28 21:02:17
line 381-387 is the same as SetOutputVolumePercent
Qiang(Joe) Xu
2016/07/28 23:15:57
Done.
| |
388 } | |
389 | |
379 // TODO: Rename the 'Percent' to something more meaningful. | 390 // TODO: Rename the 'Percent' to something more meaningful. |
380 void CrasAudioHandler::SetInputGainPercent(int gain_percent) { | 391 void CrasAudioHandler::SetInputGainPercent(int gain_percent) { |
381 // TODO(jennyz): Should we set all input devices' gain to the same level? | 392 // TODO(jennyz): Should we set all input devices' gain to the same level? |
382 for (AudioDeviceMap::const_iterator it = audio_devices_.begin(); | 393 for (AudioDeviceMap::const_iterator it = audio_devices_.begin(); |
383 it != audio_devices_.end(); | 394 it != audio_devices_.end(); |
384 it++) { | 395 it++) { |
385 const AudioDevice& device = it->second; | 396 const AudioDevice& device = it->second; |
386 if (device.is_input && device.active) | 397 if (device.is_input && device.active) |
387 SetInputNodeGainPercent(active_input_node_id_, gain_percent); | 398 SetInputNodeGainPercent(active_input_node_id_, gain_percent); |
388 } | 399 } |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
625 return; | 636 return; |
626 } else { | 637 } else { |
627 // Reset the initializing_audio_state_ in case SetOutputNodeVolume request | 638 // Reset the initializing_audio_state_ in case SetOutputNodeVolume request |
628 // is lost by cras due to cras is not ready when CrasAudioHandler is being | 639 // is lost by cras due to cras is not ready when CrasAudioHandler is being |
629 // initialized. | 640 // initialized. |
630 initializing_audio_state_ = false; | 641 initializing_audio_state_ = false; |
631 init_volume_count_ = 0; | 642 init_volume_count_ = 0; |
632 } | 643 } |
633 } | 644 } |
634 | 645 |
646 // Do not notify the observers for the volume changed event if that is | |
647 // initiated internally, not by users. For example, a volume restoring | |
648 // comes from maximize mode screenshot volume-down, power down accelerators. | |
649 if (volume_internally_changed_) { | |
jennyz
2016/07/28 21:02:17
volume_internally_changed_ is similar to initializ
Qiang(Joe) Xu
2016/07/28 23:15:57
I use a mask to merge them.
| |
650 volume_internally_changed_ = false; | |
651 return; | |
652 } | |
653 | |
635 FOR_EACH_OBSERVER(AudioObserver, observers_, | 654 FOR_EACH_OBSERVER(AudioObserver, observers_, |
636 OnOutputNodeVolumeChanged(node_id, volume)); | 655 OnOutputNodeVolumeChanged(node_id, volume)); |
637 } | 656 } |
638 | 657 |
639 void CrasAudioHandler::ActiveOutputNodeChanged(uint64_t node_id) { | 658 void CrasAudioHandler::ActiveOutputNodeChanged(uint64_t node_id) { |
640 if (active_output_node_id_ == node_id) | 659 if (active_output_node_id_ == node_id) |
641 return; | 660 return; |
642 | 661 |
643 // Active audio output device should always be changed by chrome. | 662 // Active audio output device should always be changed by chrome. |
644 // During system boot, cras may change active input to unknown device 0x1, | 663 // During system boot, cras may change active input to unknown device 0x1, |
(...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1372 hdmi_rediscover_grace_period_duration_in_ms_), | 1391 hdmi_rediscover_grace_period_duration_in_ms_), |
1373 this, &CrasAudioHandler::UpdateAudioAfterHDMIRediscoverGracePeriod); | 1392 this, &CrasAudioHandler::UpdateAudioAfterHDMIRediscoverGracePeriod); |
1374 } | 1393 } |
1375 | 1394 |
1376 void CrasAudioHandler::SetHDMIRediscoverGracePeriodForTesting( | 1395 void CrasAudioHandler::SetHDMIRediscoverGracePeriodForTesting( |
1377 int duration_in_ms) { | 1396 int duration_in_ms) { |
1378 hdmi_rediscover_grace_period_duration_in_ms_ = duration_in_ms; | 1397 hdmi_rediscover_grace_period_duration_in_ms_ = duration_in_ms; |
1379 } | 1398 } |
1380 | 1399 |
1381 } // namespace chromeos | 1400 } // namespace chromeos |
OLD | NEW |