Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(740)

Unified Diff: media/audio/audio_input_controller.cc

Issue 7129057: Fix bug when unplugging an audio input device whilst using speech input. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Removed unnecessary includes Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/audio/audio_input_controller.cc
diff --git a/media/audio/audio_input_controller.cc b/media/audio/audio_input_controller.cc
index 311a54ef840581ea69ef0cd65a52e13f33f16512..1c486b562622d1cf2a44941dbf6a2b54a58f1c63 100644
--- a/media/audio/audio_input_controller.cc
+++ b/media/audio/audio_input_controller.cc
@@ -10,6 +10,7 @@
namespace media {
static const int kMaxInputChannels = 2;
+const int kTimerResetInterval = 1; // One second.
Satish 2011/06/15 10:23:27 suggest moving both these constants to an anonymou
allanwoj 2011/06/15 11:11:17 Done.
// static
AudioInputController::Factory* AudioInputController::factory_ = NULL;
@@ -18,6 +19,10 @@ AudioInputController::AudioInputController(EventHandler* handler,
SyncWriter* sync_writer)
: handler_(handler),
stream_(NULL),
+ ALLOW_THIS_IN_INITIALIZER_LIST(timer_(
+ base::TimeDelta::FromSeconds(kTimerResetInterval),
+ this,
+ &AudioInputController::DoReportTimeoutError)),
state_(kEmpty),
thread_("AudioInputControllerThread"),
sync_writer_(sync_writer) {
@@ -123,6 +128,9 @@ void AudioInputController::DoCreate(AudioParameters params) {
return;
}
+ thread_.message_loop()->PostTask(
+ FROM_HERE,
+ NewRunnableMethod(this, &AudioInputController::DoTimerReset));
state_ = kCreated;
handler_->OnCreated(this);
}
@@ -168,6 +176,15 @@ void AudioInputController::DoReportError(int code) {
handler_->OnError(this, code);
}
+void AudioInputController::DoReportTimeoutError() {
+ handler_->OnError(this, 0);
+}
+
+void AudioInputController::DoTimerReset() {
+ DCHECK_EQ(thread_.message_loop(), MessageLoop::current());
+ timer_.Reset();
+}
+
void AudioInputController::OnData(AudioInputStream* stream, const uint8* data,
uint32 size) {
{
@@ -176,6 +193,10 @@ void AudioInputController::OnData(AudioInputStream* stream, const uint8* data,
return;
}
+ thread_.message_loop()->PostTask(
+ FROM_HERE,
+ NewRunnableMethod(this, &AudioInputController::DoTimerReset));
+
// Use SyncSocket if we are in a low-latency mode.
if (LowLatencyMode()) {
sync_writer_->Write(data, size);

Powered by Google App Engine
This is Rietveld 408576698