diff options
Diffstat (limited to 'media/audio/linux/alsa_input.cc')
-rw-r--r-- | media/audio/linux/alsa_input.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/media/audio/linux/alsa_input.cc b/media/audio/linux/alsa_input.cc index 8aad65a..725ecb4 100644 --- a/media/audio/linux/alsa_input.cc +++ b/media/audio/linux/alsa_input.cc @@ -9,8 +9,10 @@ #include "base/logging.h" #include "base/message_loop.h" #include "base/time.h" +#include "media/audio/audio_manager.h" #include "media/audio/linux/alsa_util.h" #include "media/audio/linux/alsa_wrapper.h" +#include "media/audio/linux/audio_manager_linux.h" static const int kNumPacketsInRingBuffer = 3; @@ -105,6 +107,9 @@ void AlsaPcmInputStream::Start(AudioInputCallback* callback) { FROM_HERE, base::Bind(&AlsaPcmInputStream::ReadAudio, weak_factory_.GetWeakPtr()), delay_ms); + + static_cast<AudioManagerLinux*>(AudioManager::GetAudioManager())-> + IncreaseActiveInputStreamCount(); } } @@ -213,6 +218,11 @@ void AlsaPcmInputStream::Stop() { if (!device_handle_ || !callback_) return; + // Stop is always called before Close. In case of error, this will be + // also called when closing the input controller. + static_cast<AudioManagerLinux*>(AudioManager::GetAudioManager())-> + DecreaseActiveInputStreamCount(); + weak_factory_.InvalidateWeakPtrs(); // Cancel the next scheduled read. int error = wrapper_->PcmDrop(device_handle_); if (error < 0) |