Chromium Code Reviews| Index: components/exo/gaming_seat.h |
| diff --git a/components/exo/gaming_seat.h b/components/exo/gaming_seat.h |
| index 40e44ae33352eeb4cf86c473177ce37d6e52c548..6c9ed0d63a78b3e5aaa20fcc313effa2bd08ae20 100644 |
| --- a/components/exo/gaming_seat.h |
| +++ b/components/exo/gaming_seat.h |
| @@ -7,6 +7,7 @@ |
| #include <memory> |
| +#include "base/containers/flat_map.h" |
| #include "base/macros.h" |
| #include "base/memory/weak_ptr.h" |
| #include "base/sequenced_task_runner.h" |
| @@ -17,6 +18,18 @@ |
| #include "device/gamepad/gamepad_data_fetcher.h" |
| #include "ui/aura/client/focus_change_observer.h" |
| +#if defined(USE_OZONE_GAMEPAD) |
| +#include "ui/events/ozone/gamepad/gamepad_observer.h" |
| + |
| +namespace ui { |
| +class GamepadProviderOzone; |
| +} |
| +#endif |
| + |
| +namespace base { |
| +class Thread; |
| +} |
| + |
| namespace exo { |
| class GamingSeatDelegate; |
| class GamepadDelegate; |
| @@ -24,29 +37,43 @@ class GamepadDelegate; |
| using CreateGamepadDataFetcherCallback = |
| base::Callback<std::unique_ptr<device::GamepadDataFetcher>()>; |
| -// This class represents one gaming seat, it uses a background thread |
|
reveman
2017/06/06 21:58:55
Please keep a class description here in some form.
jkwang
2017/06/07 18:03:19
Done.
|
| -// for polling gamepad devices and notifies the corresponding GampadDelegate of |
| -// any changes. |
| -class GamingSeat : public WMHelper::FocusObserver { |
| +// TODO(jkwang) always use ozone_gamepad when ozone is default for all chrome os |
|
reveman
2017/06/06 21:58:55
nit: s/TODO(jkwang)/TODO(jkwang):", s/chrome os/Ch
jkwang
2017/06/07 18:03:19
Done.
|
| +// build. |
|
reveman
2017/06/06 21:58:55
nit: s/build/builds/
jkwang
2017/06/07 18:03:19
Done.
|
| +class GamingSeat : public WMHelper::FocusObserver |
| +#if defined(USE_OZONE_GAMEPAD) |
| + , |
| + public ui::GamepadObserver |
| +#endif |
| +{ |
| public: |
| - // This class will post tasks to invoke the delegate on the thread runner |
| - // which is associated with the thread that is creating this instance. |
| + // This class will monitor gamepad connection change and manage gamepad |
|
reveman
2017/06/06 21:58:55
s/change/changes/
jkwang
2017/06/07 18:03:18
Done.
|
| + // returned by gaming_seat_delegate. |
| GamingSeat(GamingSeatDelegate* gaming_seat_delegate, |
| base::SingleThreadTaskRunner* polling_task_runner); |
| - // Allows test cases to specify a CreateGamepadDataFetcherCallback that |
| - // overrides the default GamepadPlatformDataFetcher. |
| - GamingSeat(GamingSeatDelegate* gaming_seat_delegate, |
| - base::SingleThreadTaskRunner* polling_task_runner, |
| - CreateGamepadDataFetcherCallback create_fetcher_callback); |
| - |
| ~GamingSeat() override; |
| - // Overridden WMHelper::FocusObserver: |
| + // Overridden from WMHelper::FocusObserver: |
| void OnWindowFocused(aura::Window* gained_focus, |
| aura::Window* lost_focus) override; |
| +#if defined(USE_OZONE_GAMEPAD) |
| + // Overridden from ui::GamepadObserver: |
| + void OnGamepadDevicesUpdated() override; |
| + void OnGamepadEvent(const ui::GamepadEvent& event) override; |
| +#endif |
| + |
| private: |
| + // The delegate that handles gamepad_added. |
| + GamingSeatDelegate* const delegate_; |
| + |
| +#if defined(USE_OZONE_GAMEPAD) |
| + // Contains the delegate for each gamepad device. |
| + base::flat_map<int, GamepadDelegate*> gamepads_; |
| + |
| + // Cached pointer to GamepadProviderOzone. |
| + ui::GamepadProviderOzone* gamepad_provider_; |
|
reveman
2017/06/06 21:58:55
why do we need this? please avoid caching a simple
jkwang
2017/06/07 18:03:19
It is suggested here.
https://cs.chromium.org/chro
reveman
2017/06/07 20:29:45
16ns on my P4/2.8GHz is not worth micro optimizing
jkwang
2017/06/07 22:01:45
Done.
|
| +#else |
| class ThreadSafeGamepadChangeFetcher; |
| // Processes updates of gamepad data and passes changes on to delegate. |
| @@ -56,9 +83,6 @@ class GamingSeat : public WMHelper::FocusObserver { |
| // polling thread. |
| scoped_refptr<ThreadSafeGamepadChangeFetcher> gamepad_change_fetcher_; |
| - // The delegate that handles gamepad_added. |
| - GamingSeatDelegate* const delegate_; |
| - |
| // The delegate instances that all other events are dispatched to. |
| GamepadDelegate* gamepad_delegates_[device::Gamepads::kItemsLengthCap]; |
| @@ -66,9 +90,10 @@ class GamingSeat : public WMHelper::FocusObserver { |
| device::Gamepads pad_state_; |
| // ThreadChecker for the origin thread. |
| - base::ThreadChecker thread_checker_; |
| + THREAD_CHECKER(thread_checker_); |
| base::WeakPtrFactory<GamingSeat> weak_ptr_factory_; |
| +#endif |
| DISALLOW_COPY_AND_ASSIGN(GamingSeat); |
| }; |