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_; |