| 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..9c78407b5f935ba8d14de5c801af42da07e78a0f 100644
|
| --- a/content/browser/gamepad/gamepad_provider.cc
|
| +++ b/content/browser/gamepad/gamepad_provider.cc
|
| @@ -1,4 +1,5 @@
|
| // Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| @@ -12,14 +13,19 @@
|
| #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 {
|
| +#if defined(OS_ANDROID)
|
| +const int64 GamepadProvider::max_timestamp_before_pause_ = 500;
|
| +#endif
|
|
|
| GamepadProvider::ClosureAndThread::ClosureAndThread(
|
| const base::Closure& c,
|
| @@ -63,6 +69,12 @@ base::SharedMemoryHandle GamepadProvider::GetSharedMemoryHandleForProcess(
|
| return renderer_handle;
|
| }
|
|
|
| +#if defined(OS_ANDROID)
|
| +bool GamepadProvider::GetPollState() {
|
| + return is_paused_;
|
| +}
|
| +#endif
|
| +
|
| void GamepadProvider::Pause() {
|
| {
|
| base::AutoLock lock(is_paused_lock_);
|
| @@ -167,6 +179,17 @@ void GamepadProvider::DoPoll() {
|
| devices_changed_ = false;
|
| }
|
|
|
| +#if defined(OS_ANDROID)
|
| + base::TimeDelta timestamp =
|
| + (base::Time::NowFromSystemTime()) - (
|
| + GamepadService::GetInstance()->GetGamepadAccessTimestamp());
|
| +
|
| + if (timestamp.InMilliseconds() > max_timestamp_before_pause_) {
|
| + Pause();
|
| + return;
|
| + }
|
| +#endif
|
| +
|
| // Acquire the SeqLock. There is only ever one writer to this data.
|
| // See gamepad_hardware_buffer.h.
|
| hwbuf->sequence.WriteBegin();
|
|
|