| Index: content/browser/gamepad/gamepad_provider.cc
|
| diff --git a/content/browser/gamepad/gamepad_provider.cc b/content/browser/gamepad/gamepad_provider.cc
|
| index 55a5f30ed78b6802c7fd6231a13bd0d596c958c8..f77389456ca87daf89201799fc0899d27a48f0ba 100644
|
| --- a/content/browser/gamepad/gamepad_provider.cc
|
| +++ b/content/browser/gamepad/gamepad_provider.cc
|
| @@ -12,14 +12,17 @@
|
| #include "base/message_loop/message_loop_proxy.h"
|
| #include "base/threading/thread.h"
|
| #include "base/threading/thread_restrictions.h"
|
| +#include "base/time/time.h"
|
| #include "content/browser/gamepad/gamepad_data_fetcher.h"
|
| #include "content/browser/gamepad/gamepad_platform_data_fetcher.h"
|
| #include "content/browser/gamepad/gamepad_provider.h"
|
| +#include "content/browser/gamepad/gamepad_service.h"
|
| #include "content/common/gamepad_hardware_buffer.h"
|
| #include "content/common/gamepad_messages.h"
|
| #include "content/common/gamepad_user_gesture.h"
|
|
|
| namespace content {
|
| +const int64 GamepadProvider::max_timestamp_before_pause_ = 500;
|
|
|
| GamepadProvider::ClosureAndThread::ClosureAndThread(
|
| const base::Closure& c,
|
| @@ -63,6 +66,10 @@ base::SharedMemoryHandle GamepadProvider::GetSharedMemoryHandleForProcess(
|
| return renderer_handle;
|
| }
|
|
|
| +bool GamepadProvider::GetPollState() {
|
| + return is_paused_;
|
| +}
|
| +
|
| void GamepadProvider::Pause() {
|
| {
|
| base::AutoLock lock(is_paused_lock_);
|
| @@ -167,6 +174,15 @@ void GamepadProvider::DoPoll() {
|
| devices_changed_ = false;
|
| }
|
|
|
| + base::TimeDelta timestamp =
|
| + (base::Time::NowFromSystemTime()) - (
|
| + GamepadService::GetInstance()->GetGamepadAccessTimestamp());
|
| +
|
| + if (timestamp.InMilliseconds() > max_timestamp_before_pause_) {
|
| + Pause();
|
| + return;
|
| + }
|
| +
|
| // Acquire the SeqLock. There is only ever one writer to this data.
|
| // See gamepad_hardware_buffer.h.
|
| hwbuf->sequence.WriteBegin();
|
|
|