Commit 872acdf8 authored by Johann's avatar Johann Committed by Commit Bot

gamepad: convert GamepadSharedMemoryReader to GC

Make the class GarbageCollected so that the mojo::Re{mote,ceiver}
objects can be managed as well.

Change-Id: I7d0919d900eb54c557cceda07e496bd4920b2b42
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2106989Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Reviewed-by: default avatarBrandon Jones <bajones@chromium.org>
Commit-Queue: Johann Koenig <johannkoenig@google.com>
Cr-Commit-Position: refs/heads/master@{#751955}
parent 7e1b4a87
......@@ -53,6 +53,7 @@ void GamepadDispatcher::InitializeHaptics() {
}
void GamepadDispatcher::Trace(Visitor* visitor) {
visitor->Trace(reader_);
PlatformEventDispatcher::Trace(visitor);
}
......@@ -85,7 +86,7 @@ void GamepadDispatcher::DispatchDidConnectOrDisconnectGamepad(
void GamepadDispatcher::StartListening(LocalFrame* frame) {
if (!reader_) {
DCHECK(frame);
reader_ = std::make_unique<GamepadSharedMemoryReader>(*frame);
reader_ = MakeGarbageCollected<GamepadSharedMemoryReader>(*frame);
}
reader_->Start(this);
}
......
......@@ -62,7 +62,7 @@ class GamepadDispatcher final : public GarbageCollected<GamepadDispatcher>,
bool connected);
scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
std::unique_ptr<GamepadSharedMemoryReader> reader_;
Member<GamepadSharedMemoryReader> reader_;
mojo::Remote<device::mojom::blink::GamepadHapticsManager>
gamepad_haptics_manager_remote_;
};
......
......@@ -25,6 +25,8 @@ GamepadSharedMemoryReader::GamepadSharedMemoryReader(LocalFrame& frame) {
receiver_.BindNewPipeAndPassRemote(task_runner));
}
void GamepadSharedMemoryReader::Trace(Visitor* visitor) {}
void GamepadSharedMemoryReader::SendStartMessage() {
if (gamepad_monitor_remote_) {
gamepad_monitor_remote_->GamepadStartPolling(
......
......@@ -13,6 +13,7 @@
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "mojo/public/cpp/system/buffer.h"
#include "third_party/blink/renderer/platform/heap/handle.h"
namespace base {
class ReadOnlySharedMemoryRegion;
......@@ -28,10 +29,13 @@ namespace blink {
class GamepadListener;
class LocalFrame;
class GamepadSharedMemoryReader : public device::mojom::blink::GamepadObserver {
class GamepadSharedMemoryReader
: public GarbageCollected<GamepadSharedMemoryReader>,
public device::mojom::blink::GamepadObserver {
public:
explicit GamepadSharedMemoryReader(LocalFrame& frame);
~GamepadSharedMemoryReader() override;
void Trace(Visitor*);
void SampleGamepads(device::Gamepads& gamepads);
void Start(blink::GamepadListener* listener);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment