| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/gamepad/gamepad_provider.h" | 5 #include "content/browser/gamepad/gamepad_provider.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <string.h> | 8 #include <string.h> |
| 9 #include <cmath> | 9 #include <cmath> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 const ClosureAndThread& other) = default; | 43 const ClosureAndThread& other) = default; |
| 44 | 44 |
| 45 GamepadProvider::ClosureAndThread::~ClosureAndThread() { | 45 GamepadProvider::ClosureAndThread::~ClosureAndThread() { |
| 46 } | 46 } |
| 47 | 47 |
| 48 GamepadProvider::GamepadProvider() | 48 GamepadProvider::GamepadProvider() |
| 49 : is_paused_(true), | 49 : is_paused_(true), |
| 50 have_scheduled_do_poll_(false), | 50 have_scheduled_do_poll_(false), |
| 51 devices_changed_(true), | 51 devices_changed_(true), |
| 52 ever_had_user_gesture_(false) { | 52 ever_had_user_gesture_(false) { |
| 53 Initialize(scoped_ptr<GamepadDataFetcher>()); | 53 Initialize(std::unique_ptr<GamepadDataFetcher>()); |
| 54 } | 54 } |
| 55 | 55 |
| 56 GamepadProvider::GamepadProvider(scoped_ptr<GamepadDataFetcher> fetcher) | 56 GamepadProvider::GamepadProvider(std::unique_ptr<GamepadDataFetcher> fetcher) |
| 57 : is_paused_(true), | 57 : is_paused_(true), |
| 58 have_scheduled_do_poll_(false), | 58 have_scheduled_do_poll_(false), |
| 59 devices_changed_(true), | 59 devices_changed_(true), |
| 60 ever_had_user_gesture_(false) { | 60 ever_had_user_gesture_(false) { |
| 61 Initialize(std::move(fetcher)); | 61 Initialize(std::move(fetcher)); |
| 62 } | 62 } |
| 63 | 63 |
| 64 GamepadProvider::~GamepadProvider() { | 64 GamepadProvider::~GamepadProvider() { |
| 65 base::SystemMonitor* monitor = base::SystemMonitor::Get(); | 65 base::SystemMonitor* monitor = base::SystemMonitor::Get(); |
| 66 if (monitor) | 66 if (monitor) |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 base::AutoLock lock(user_gesture_lock_); | 117 base::AutoLock lock(user_gesture_lock_); |
| 118 user_gesture_observers_.push_back( | 118 user_gesture_observers_.push_back( |
| 119 ClosureAndThread(closure, base::MessageLoop::current()->task_runner())); | 119 ClosureAndThread(closure, base::MessageLoop::current()->task_runner())); |
| 120 } | 120 } |
| 121 | 121 |
| 122 void GamepadProvider::OnDevicesChanged(base::SystemMonitor::DeviceType type) { | 122 void GamepadProvider::OnDevicesChanged(base::SystemMonitor::DeviceType type) { |
| 123 base::AutoLock lock(devices_changed_lock_); | 123 base::AutoLock lock(devices_changed_lock_); |
| 124 devices_changed_ = true; | 124 devices_changed_ = true; |
| 125 } | 125 } |
| 126 | 126 |
| 127 void GamepadProvider::Initialize(scoped_ptr<GamepadDataFetcher> fetcher) { | 127 void GamepadProvider::Initialize(std::unique_ptr<GamepadDataFetcher> fetcher) { |
| 128 size_t data_size = sizeof(GamepadHardwareBuffer); | 128 size_t data_size = sizeof(GamepadHardwareBuffer); |
| 129 base::SystemMonitor* monitor = base::SystemMonitor::Get(); | 129 base::SystemMonitor* monitor = base::SystemMonitor::Get(); |
| 130 if (monitor) | 130 if (monitor) |
| 131 monitor->AddDevicesChangedObserver(this); | 131 monitor->AddDevicesChangedObserver(this); |
| 132 bool res = gamepad_shared_memory_.CreateAndMapAnonymous(data_size); | 132 bool res = gamepad_shared_memory_.CreateAndMapAnonymous(data_size); |
| 133 CHECK(res); | 133 CHECK(res); |
| 134 GamepadHardwareBuffer* hwbuf = SharedMemoryAsHardwareBuffer(); | 134 GamepadHardwareBuffer* hwbuf = SharedMemoryAsHardwareBuffer(); |
| 135 memset(hwbuf, 0, sizeof(GamepadHardwareBuffer)); | 135 memset(hwbuf, 0, sizeof(GamepadHardwareBuffer)); |
| 136 pad_states_.reset(new PadState[WebGamepads::itemsLengthCap]); | 136 pad_states_.reset(new PadState[WebGamepads::itemsLengthCap]); |
| 137 | 137 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 151 const base::MessageLoop::Type kMessageLoopType = base::MessageLoop::TYPE_UI; | 151 const base::MessageLoop::Type kMessageLoopType = base::MessageLoop::TYPE_UI; |
| 152 #endif | 152 #endif |
| 153 polling_thread_->StartWithOptions(base::Thread::Options(kMessageLoopType, 0)); | 153 polling_thread_->StartWithOptions(base::Thread::Options(kMessageLoopType, 0)); |
| 154 | 154 |
| 155 polling_thread_->task_runner()->PostTask( | 155 polling_thread_->task_runner()->PostTask( |
| 156 FROM_HERE, base::Bind(&GamepadProvider::DoInitializePollingThread, | 156 FROM_HERE, base::Bind(&GamepadProvider::DoInitializePollingThread, |
| 157 base::Unretained(this), base::Passed(&fetcher))); | 157 base::Unretained(this), base::Passed(&fetcher))); |
| 158 } | 158 } |
| 159 | 159 |
| 160 void GamepadProvider::DoInitializePollingThread( | 160 void GamepadProvider::DoInitializePollingThread( |
| 161 scoped_ptr<GamepadDataFetcher> fetcher) { | 161 std::unique_ptr<GamepadDataFetcher> fetcher) { |
| 162 DCHECK(base::MessageLoop::current() == polling_thread_->message_loop()); | 162 DCHECK(base::MessageLoop::current() == polling_thread_->message_loop()); |
| 163 DCHECK(!data_fetcher_.get()); // Should only initialize once. | 163 DCHECK(!data_fetcher_.get()); // Should only initialize once. |
| 164 | 164 |
| 165 if (!fetcher) | 165 if (!fetcher) |
| 166 fetcher.reset(new GamepadPlatformDataFetcher); | 166 fetcher.reset(new GamepadPlatformDataFetcher); |
| 167 data_fetcher_ = std::move(fetcher); | 167 data_fetcher_ = std::move(fetcher); |
| 168 } | 168 } |
| 169 | 169 |
| 170 void GamepadProvider::SendPauseHint(bool paused) { | 170 void GamepadProvider::SendPauseHint(bool paused) { |
| 171 DCHECK(base::MessageLoop::current() == polling_thread_->message_loop()); | 171 DCHECK(base::MessageLoop::current() == polling_thread_->message_loop()); |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 325 } | 325 } |
| 326 if (!had_gesture_before && ever_had_user_gesture_) { | 326 if (!had_gesture_before && ever_had_user_gesture_) { |
| 327 // Initialize pad_states_ for the first time. | 327 // Initialize pad_states_ for the first time. |
| 328 for (size_t i = 0; i < WebGamepads::itemsLengthCap; ++i) { | 328 for (size_t i = 0; i < WebGamepads::itemsLengthCap; ++i) { |
| 329 pad_states_.get()[i].SetPad(pads.items[i]); | 329 pad_states_.get()[i].SetPad(pads.items[i]); |
| 330 } | 330 } |
| 331 } | 331 } |
| 332 } | 332 } |
| 333 | 333 |
| 334 } // namespace content | 334 } // namespace content |
| OLD | NEW |