Index: chrome/browser/chromeos/audio/audio_handler.cc |
=================================================================== |
--- chrome/browser/chromeos/audio/audio_handler.cc (revision 119932) |
+++ chrome/browser/chromeos/audio/audio_handler.cc (working copy) |
@@ -49,8 +49,10 @@ |
return g_audio_handler; |
} |
-bool AudioHandler::IsInitialized() { |
- return mixer_->IsInitialized(); |
+// static |
+AudioHandler* AudioHandler::GetInstanceIfInitialized() { |
+ return g_audio_handler && g_audio_handler->IsMixerInitialized() ? |
+ g_audio_handler : NULL; |
} |
double AudioHandler::GetVolumePercent() { |
@@ -60,6 +62,7 @@ |
void AudioHandler::SetVolumePercent(double volume_percent) { |
volume_percent = min(max(volume_percent, 0.0), 100.0); |
mixer_->SetVolumeDb(PercentToVolumeDb(volume_percent)); |
+ FOR_EACH_OBSERVER(VolumeObserver, volume_observers_, OnVolumeChanged()); |
} |
void AudioHandler::AdjustVolumeByPercent(double adjust_by_percent) { |
@@ -74,8 +77,17 @@ |
void AudioHandler::SetMuted(bool mute) { |
mixer_->SetMuted(mute); |
+ FOR_EACH_OBSERVER(VolumeObserver, volume_observers_, OnVolumeChanged()); |
} |
+void AudioHandler::AddVolumeObserver(VolumeObserver* observer) { |
+ volume_observers_.AddObserver(observer); |
+} |
+ |
+void AudioHandler::RemoveVolumeObserver(VolumeObserver* observer) { |
+ volume_observers_.RemoveObserver(observer); |
+} |
+ |
AudioHandler::AudioHandler() |
: mixer_(new AudioMixerAlsa()) { |
mixer_->Init(); |
@@ -85,6 +97,10 @@ |
mixer_.reset(); |
}; |
+bool AudioHandler::IsMixerInitialized() { |
+ return mixer_->IsInitialized(); |
+} |
+ |
// VolumeDbToPercent() and PercentToVolumeDb() conversion functions allow us |
// complete control over how the 0 to 100% range is mapped to actual loudness. |
// |