Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(381)

Unified Diff: device/vr/openvr/openvr_device.h

Issue 2834843002: Add event listening function to openvr device (Closed)
Patch Set: Address nhu@ some comments and temporary fix initial vr_system in each OnChange call issue Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | device/vr/openvr/openvr_device.cc » ('j') | device/vr/openvr/openvr_device.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
};
« no previous file with comments | « no previous file | device/vr/openvr/openvr_device.cc » ('j') | device/vr/openvr/openvr_device.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698