| Index: media/audio/audio_input_controller.cc
|
| diff --git a/media/audio/audio_input_controller.cc b/media/audio/audio_input_controller.cc
|
| index f7747b9d37fb77b948b34e0daf2e3a8407905f56..d701337b51db7d80bd4ff5bf18f3316485fac62e 100644
|
| --- a/media/audio/audio_input_controller.cc
|
| +++ b/media/audio/audio_input_controller.cc
|
| @@ -8,6 +8,7 @@
|
| #include "base/threading/thread_restrictions.h"
|
| #include "media/base/limits.h"
|
| #include "media/base/scoped_histogram_timer.h"
|
| +#include "media/base/user_input_monitor.h"
|
|
|
| namespace {
|
| const int kMaxInputChannels = 2;
|
| @@ -46,7 +47,7 @@ AudioInputController::AudioInputController(EventHandler* handler,
|
| sync_writer_(sync_writer),
|
| max_volume_(0.0),
|
| user_input_monitor_(user_input_monitor),
|
| - key_pressed_(false) {
|
| + prev_key_down_count_(0) {
|
| DCHECK(creator_loop_.get());
|
| }
|
|
|
| @@ -218,6 +219,11 @@ void AudioInputController::DoCreateForStream(
|
|
|
| state_ = kCreated;
|
| handler_->OnCreated(this);
|
| +
|
| + if (user_input_monitor_) {
|
| + user_input_monitor_->EnableKeyPressMonitoring();
|
| + prev_key_down_count_ = user_input_monitor_->GetKeyPressCount();
|
| + }
|
| }
|
|
|
| void AudioInputController::DoRecord() {
|
| @@ -240,9 +246,6 @@ void AudioInputController::DoRecord() {
|
|
|
| stream_->Start(this);
|
| handler_->OnRecording(this);
|
| -
|
| - if (user_input_monitor_)
|
| - user_input_monitor_->AddKeyStrokeListener(this);
|
| }
|
|
|
| void AudioInputController::DoClose() {
|
| @@ -263,7 +266,7 @@ void AudioInputController::DoClose() {
|
| state_ = kClosed;
|
|
|
| if (user_input_monitor_)
|
| - user_input_monitor_->RemoveKeyStrokeListener(this);
|
| + user_input_monitor_->DisableKeyPressMonitoring();
|
| }
|
| }
|
|
|
| @@ -330,16 +333,23 @@ void AudioInputController::DoCheckForNoData() {
|
| base::Unretained(this)));
|
| }
|
|
|
| -void AudioInputController::OnData(AudioInputStream* stream, const uint8* data,
|
| - uint32 size, uint32 hardware_delay_bytes,
|
| +void AudioInputController::OnData(AudioInputStream* stream,
|
| + const uint8* data,
|
| + uint32 size,
|
| + uint32 hardware_delay_bytes,
|
| double volume) {
|
| - bool key_pressed = false;
|
| {
|
| base::AutoLock auto_lock(lock_);
|
| if (state_ != kRecording)
|
| return;
|
| + }
|
|
|
| - std::swap(key_pressed, key_pressed_);
|
| + bool key_pressed = false;
|
| + if (user_input_monitor_) {
|
| + size_t current_count = user_input_monitor_->GetKeyPressCount();
|
| + key_pressed = current_count != prev_key_down_count_;
|
| + prev_key_down_count_ = current_count;
|
| + DVLOG_IF(6, key_pressed) << "Detected keypress.";
|
| }
|
|
|
| // Mark data as active to ensure that the periodic calls to
|
| @@ -369,11 +379,6 @@ void AudioInputController::OnError(AudioInputStream* stream) {
|
| &AudioInputController::DoReportError, this));
|
| }
|
|
|
| -void AudioInputController::OnKeyStroke() {
|
| - base::AutoLock auto_lock(lock_);
|
| - key_pressed_ = true;
|
| -}
|
| -
|
| void AudioInputController::DoStopCloseAndClearStream(
|
| base::WaitableEvent* done) {
|
| DCHECK(message_loop_->BelongsToCurrentThread());
|
|
|