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

Side by Side Diff: third_party/WebKit/Source/modules/vr/VRDisplay.h

Issue 2624633002: Remove Sync GetPose VRService call, implement VRVSyncProvider (Closed)
Patch Set: Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #ifndef VRDisplay_h 5 #ifndef VRDisplay_h
6 #define VRDisplay_h 6 #define VRDisplay_h
7 7
8 #include "core/dom/Document.h" 8 #include "core/dom/Document.h"
9 #include "core/dom/FrameRequestCallback.h" 9 #include "core/dom/FrameRequestCallback.h"
10 #include "core/events/EventTarget.h" 10 #include "core/events/EventTarget.h"
(...skipping 23 matching lines...) Expand all
34 class VRStageParameters; 34 class VRStageParameters;
35 class VRPose; 35 class VRPose;
36 36
37 class WebGLRenderingContextBase; 37 class WebGLRenderingContextBase;
38 38
39 enum VREye { VREyeNone, VREyeLeft, VREyeRight }; 39 enum VREye { VREyeNone, VREyeLeft, VREyeRight };
40 40
41 class VRDisplay final : public EventTargetWithInlineData, 41 class VRDisplay final : public EventTargetWithInlineData,
42 public ActiveScriptWrappable<VRDisplay>, 42 public ActiveScriptWrappable<VRDisplay>,
43 public ContextLifecycleObserver, 43 public ContextLifecycleObserver,
44 public device::mojom::blink::VRDisplayClient { 44 public device::mojom::blink::VRDisplayClient,
45 public device::mojom::blink::VRVSyncProviderClient {
45 DEFINE_WRAPPERTYPEINFO(); 46 DEFINE_WRAPPERTYPEINFO();
46 USING_GARBAGE_COLLECTED_MIXIN(VRDisplay); 47 USING_GARBAGE_COLLECTED_MIXIN(VRDisplay);
47 USING_PRE_FINALIZER(VRDisplay, dispose); 48 USING_PRE_FINALIZER(VRDisplay, dispose);
48 49
49 public: 50 public:
50 ~VRDisplay(); 51 ~VRDisplay();
51 52
52 unsigned displayId() const { return m_displayId; } 53 unsigned displayId() const { return m_displayId; }
53 const String& displayName() const { return m_displayName; } 54 const String& displayName() const { return m_displayName; }
54 55
(...skipping 10 matching lines...) Expand all
65 double depthNear() const { return m_depthNear; } 66 double depthNear() const { return m_depthNear; }
66 double depthFar() const { return m_depthFar; } 67 double depthFar() const { return m_depthFar; }
67 68
68 void setDepthNear(double value) { m_depthNear = value; } 69 void setDepthNear(double value) { m_depthNear = value; }
69 void setDepthFar(double value) { m_depthFar = value; } 70 void setDepthFar(double value) { m_depthFar = value; }
70 71
71 VREyeParameters* getEyeParameters(const String&); 72 VREyeParameters* getEyeParameters(const String&);
72 73
73 int requestAnimationFrame(FrameRequestCallback*); 74 int requestAnimationFrame(FrameRequestCallback*);
74 void cancelAnimationFrame(int id); 75 void cancelAnimationFrame(int id);
75 void serviceScriptedAnimations(double monotonicAnimationStartTime);
76 76
77 ScriptPromise requestPresent(ScriptState*, const HeapVector<VRLayer>& layers); 77 ScriptPromise requestPresent(ScriptState*, const HeapVector<VRLayer>& layers);
78 ScriptPromise exitPresent(ScriptState*); 78 ScriptPromise exitPresent(ScriptState*);
79 79
80 HeapVector<VRLayer> getLayers(); 80 HeapVector<VRLayer> getLayers();
81 81
82 void submitFrame(); 82 void submitFrame();
83 83
84 Document* document(); 84 Document* document();
85 85
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 123
124 void OnPresentChange(); 124 void OnPresentChange();
125 125
126 // VRDisplayClient 126 // VRDisplayClient
127 void OnChanged(device::mojom::blink::VRDisplayInfoPtr) override; 127 void OnChanged(device::mojom::blink::VRDisplayInfoPtr) override;
128 void OnExitPresent() override; 128 void OnExitPresent() override;
129 void OnBlur() override; 129 void OnBlur() override;
130 void OnFocus() override; 130 void OnFocus() override;
131 void OnActivate(device::mojom::blink::VRDisplayEventReason) override; 131 void OnActivate(device::mojom::blink::VRDisplayEventReason) override;
132 void OnDeactivate(device::mojom::blink::VRDisplayEventReason) override; 132 void OnDeactivate(device::mojom::blink::VRDisplayEventReason) override;
133 void OnVRVsyncProviderReady(const OnVRVsyncProviderReadyCallback&) override;
134
135 // VRVSyncProviderClient
136 void OnVSync(device::mojom::blink::VRPosePtr,
137 double timeSeconds,
138 const OnVSyncCallback&) override;
133 139
134 ScriptedAnimationController& ensureScriptedAnimationController(Document*); 140 ScriptedAnimationController& ensureScriptedAnimationController(Document*);
135 141
136 Member<NavigatorVR> m_navigatorVR; 142 Member<NavigatorVR> m_navigatorVR;
137 unsigned m_displayId; 143 unsigned m_displayId = 0;
138 String m_displayName; 144 String m_displayName;
139 bool m_isConnected; 145 bool m_isConnected = false;
140 bool m_isPresenting; 146 bool m_isPresenting = false;
141 bool m_isValidDeviceForPresenting; 147 bool m_isValidDeviceForPresenting = true;
142 bool m_canUpdateFramePose; 148 bool m_canUpdateFramePose = true;
143 Member<VRDisplayCapabilities> m_capabilities; 149 Member<VRDisplayCapabilities> m_capabilities;
144 Member<VRStageParameters> m_stageParameters; 150 Member<VRStageParameters> m_stageParameters;
145 Member<VREyeParameters> m_eyeParametersLeft; 151 Member<VREyeParameters> m_eyeParametersLeft;
146 Member<VREyeParameters> m_eyeParametersRight; 152 Member<VREyeParameters> m_eyeParametersRight;
147 device::mojom::blink::VRPosePtr m_framePose; 153 device::mojom::blink::VRPosePtr m_framePose;
148 VRLayer m_layer; 154 VRLayer m_layer;
149 double m_depthNear; 155 double m_depthNear = 0.01;
150 double m_depthFar; 156 double m_depthFar = 10000.0;
151 157
152 void dispose(); 158 void dispose();
153 159
154 Timer<VRDisplay> m_fullscreenCheckTimer; 160 Timer<VRDisplay> m_fullscreenCheckTimer;
155 String m_fullscreenOrigWidth; 161 String m_fullscreenOrigWidth;
156 String m_fullscreenOrigHeight; 162 String m_fullscreenOrigHeight;
157 gpu::gles2::GLES2Interface* m_contextGL; 163 gpu::gles2::GLES2Interface* m_contextGL = nullptr;
158 Member<WebGLRenderingContextBase> m_renderingContext; 164 Member<WebGLRenderingContextBase> m_renderingContext;
159 165
160 Member<ScriptedAnimationController> m_scriptedAnimationController; 166 Member<ScriptedAnimationController> m_scriptedAnimationController;
161 bool m_animationCallbackRequested; 167 bool m_inAnimationFrame = false;
162 bool m_inAnimationFrame; 168 bool m_displayBlurred = false;
163 bool m_displayBlurred; 169 bool m_reenteredFullscreen = false;
164 bool m_reenteredFullscreen;
165 170
166 device::mojom::blink::VRDisplayPtr m_display; 171 device::mojom::blink::VRDisplayPtr m_display;
167 172
168 mojo::Binding<device::mojom::blink::VRDisplayClient> m_binding; 173 mojo::Binding<device::mojom::blink::VRDisplayClient> m_displayClientBinding;
174 mojo::Binding<device::mojom::blink::VRVSyncProviderClient>
175 m_vsyncProviderClientBinding;
169 176
170 HeapDeque<Member<ScriptPromiseResolver>> m_pendingPresentResolvers; 177 HeapDeque<Member<ScriptPromiseResolver>> m_pendingPresentResolvers;
171 }; 178 };
172 179
173 using VRDisplayVector = HeapVector<Member<VRDisplay>>; 180 using VRDisplayVector = HeapVector<Member<VRDisplay>>;
174 181
175 enum class PresentationResult { 182 enum class PresentationResult {
176 Requested = 0, 183 Requested = 0,
177 Success = 1, 184 Success = 1,
178 SuccessAlreadyPresenting = 2, 185 SuccessAlreadyPresenting = 2,
179 VRDisplayCannotPresent = 3, 186 VRDisplayCannotPresent = 3,
180 PresentationNotSupportedByDisplay = 4, 187 PresentationNotSupportedByDisplay = 4,
181 VRDisplayNotFound = 5, 188 VRDisplayNotFound = 5,
182 NotInitiatedByUserGesture = 6, 189 NotInitiatedByUserGesture = 6,
183 InvalidNumberOfLayers = 7, 190 InvalidNumberOfLayers = 7,
184 InvalidLayerSource = 8, 191 InvalidLayerSource = 8,
185 LayerSourceMissingWebGLContext = 9, 192 LayerSourceMissingWebGLContext = 9,
186 InvalidLayerBounds = 10, 193 InvalidLayerBounds = 10,
187 ServiceInactive = 11, 194 ServiceInactive = 11,
188 RequestDenied = 12, 195 RequestDenied = 12,
189 PresentationResultMax, // Must be last member of enum. 196 PresentationResultMax, // Must be last member of enum.
190 }; 197 };
191 198
192 void ReportPresentationResult(PresentationResult); 199 void ReportPresentationResult(PresentationResult);
193 200
194 } // namespace blink 201 } // namespace blink
195 202
196 #endif // VRDisplay_h 203 #endif // VRDisplay_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698