| Index: chromeos/audio/cras_audio_handler.h
|
| diff --git a/chromeos/audio/cras_audio_handler.h b/chromeos/audio/cras_audio_handler.h
|
| index c9110718e4a332a7bc0dde2b5a02d446857a8e2f..fbc8114ea3c0691960c34a4464996f24b62beebd 100644
|
| --- a/chromeos/audio/cras_audio_handler.h
|
| +++ b/chromeos/audio/cras_audio_handler.h
|
| @@ -38,6 +38,15 @@ class CHROMEOS_EXPORT CrasAudioHandler : public CrasAudioClient::Observer,
|
| AudioDeviceCompare> AudioDevicePriorityQueue;
|
| typedef std::vector<uint64_t> NodeIdList;
|
|
|
| + // Volume change reasons that are not user-initiated.
|
| + enum AutomatedVolumeChangeReason {
|
| + // Indicates it is from initializing audio state.
|
| + VOLUME_CHANGE_INITIALIZING_AUDIO_STATE,
|
| +
|
| + // Indicates it is from restoring volume in maximimize mode screenshot.
|
| + VOLUME_CHANGE_MAXIMIZE_MODE_SCREENSHOT,
|
| + };
|
| +
|
| class AudioObserver {
|
| public:
|
| // Called when an active output volume changed.
|
| @@ -155,10 +164,16 @@ class CHROMEOS_EXPORT CrasAudioHandler : public CrasAudioClient::Observer,
|
| virtual bool has_alternative_input() const;
|
| virtual bool has_alternative_output() const;
|
|
|
| - // Sets all active output devices' volume level to |volume_percent|, whose
|
| + // Sets all active output devices' volume levels to |volume_percent|, whose
|
| // range is from 0-100%.
|
| virtual void SetOutputVolumePercent(int volume_percent);
|
|
|
| + // Sets all active output devices' volume levels to |volume_percent|, whose
|
| + // range is from 0-100%, without notifying observers.
|
| + virtual void SetOutputVolumePercentWithoutNotifyingObservers(
|
| + int volume_percent,
|
| + AutomatedVolumeChangeReason reason);
|
| +
|
| // Sets all active input devices' gain level to |gain_percent|, whose range is
|
| // from 0-100%.
|
| virtual void SetInputGainPercent(int gain_percent);
|
| @@ -432,10 +447,15 @@ class CHROMEOS_EXPORT CrasAudioHandler : public CrasAudioClient::Observer,
|
|
|
| bool cras_service_available_ = false;
|
|
|
| + // FIFO list of reasons passed to
|
| + // SetOutputVolumePercentWithoutNotifyingObservers() for which we're still
|
| + // waiting for OutputNodeVolumeChanged() calls. These are used to suppress
|
| + // notifications for those changes.
|
| + std::deque<AutomatedVolumeChangeReason> automated_volume_change_reasons_;
|
| +
|
| bool initializing_audio_state_ = false;
|
| int init_volume_;
|
| uint64_t init_node_id_;
|
| - int init_volume_count_ = 0;
|
|
|
| base::WeakPtrFactory<CrasAudioHandler> weak_ptr_factory_;
|
|
|
|
|