summaryrefslogtreecommitdiffstats
path: root/media/audio/linux/alsa_input.cc
diff options
context:
space:
mode:
Diffstat (limited to 'media/audio/linux/alsa_input.cc')
-rw-r--r--media/audio/linux/alsa_input.cc10
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)