| Index: device/vr/openvr/openvr_device.h
|
| diff --git a/device/vr/openvr/openvr_device.h b/device/vr/openvr/openvr_device.h
|
| index 136f5667fd226c7e650e489d3e7491d0fbee37cc..08c0018c9fb5036e9505b9f5358ba26ff9d6c593 100644
|
| --- a/device/vr/openvr/openvr_device.h
|
| +++ b/device/vr/openvr/openvr_device.h
|
| @@ -18,6 +18,8 @@ namespace device {
|
|
|
| class OpenVRDevice : public VRDevice {
|
| public:
|
| + enum VREvent { CONNECTED = 0, DISCONNECTED = 1, CHANGED = 2 };
|
| +
|
| OpenVRDevice();
|
| ~OpenVRDevice() override;
|
|
|
| @@ -39,16 +41,28 @@ class OpenVRDevice : public VRDevice {
|
| int16_t source_height) override;
|
| void GetVRVSyncProvider(mojom::VRVSyncProviderRequest request) override;
|
|
|
| + void OnPollingEvent(OpenVRDevice::VREvent event);
|
| +
|
| private:
|
| class OpenVRRenderLoop : public base::SimpleThread,
|
| device::mojom::VRVSyncProvider {
|
| public:
|
| OpenVRRenderLoop(vr::IVRSystem* vr);
|
|
|
| + void RegistPollingEventCallback(
|
| + const base::Callback<void(OpenVRDevice::VREvent)>& onPollingVREvent);
|
| +
|
| + void UnregistPollingEventCallback();
|
| +
|
| void Bind(mojom::VRVSyncProviderRequest request);
|
|
|
| mojom::VRPosePtr getPose();
|
|
|
| + vr::IVRSystem* GetVRSystem();
|
| +
|
| + // OpenVR need invoke pollNextEvent to query system event.
|
| + void PollEvents();
|
| +
|
| private:
|
| void Run() override;
|
|
|
| @@ -56,6 +70,7 @@ class OpenVRDevice : public VRDevice {
|
| callback) override;
|
|
|
| scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_;
|
| + base::Callback<void(OpenVRDevice::VREvent)> on_polling_event_;
|
| vr::IVRSystem* vr_system_;
|
| mojo::Binding<device::mojom::VRVSyncProvider> binding_;
|
| };
|
| @@ -68,6 +83,8 @@ class OpenVRDevice : public VRDevice {
|
|
|
| mojom::VRSubmitFrameClientPtr submit_client_;
|
|
|
| + base::WeakPtrFactory<OpenVRDevice> weak_ptr_factory_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(OpenVRDevice);
|
| };
|
|
|
|
|