OLD | NEW |
---|---|
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/dom/TaskRunnerHelper.h" | |
haraken
2017/01/19 00:49:56
Not needed?
mthiesse
2017/01/19 00:54:04
Done.
| |
10 #include "core/events/EventTarget.h" | 11 #include "core/events/EventTarget.h" |
11 #include "device/vr/vr_service.mojom-blink.h" | 12 #include "device/vr/vr_service.mojom-blink.h" |
12 #include "modules/vr/VRDisplayCapabilities.h" | 13 #include "modules/vr/VRDisplayCapabilities.h" |
13 #include "modules/vr/VRLayer.h" | 14 #include "modules/vr/VRLayer.h" |
14 #include "mojo/public/cpp/bindings/binding.h" | 15 #include "mojo/public/cpp/bindings/binding.h" |
15 #include "platform/Timer.h" | 16 #include "platform/Timer.h" |
16 #include "platform/heap/Handle.h" | 17 #include "platform/heap/Handle.h" |
17 #include "public/platform/WebGraphicsContext3DProvider.h" | 18 #include "public/platform/WebGraphicsContext3DProvider.h" |
18 #include "wtf/Forward.h" | 19 #include "wtf/Forward.h" |
19 #include "wtf/text/WTFString.h" | 20 #include "wtf/text/WTFString.h" |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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 | 133 |
134 void OnVSync(device::mojom::blink::VRPosePtr, | |
135 mojo::common::mojom::blink::TimeDeltaPtr); | |
136 void ConnectVSyncProvider(); | |
137 | |
134 ScriptedAnimationController& ensureScriptedAnimationController(Document*); | 138 ScriptedAnimationController& ensureScriptedAnimationController(Document*); |
135 | 139 |
136 Member<NavigatorVR> m_navigatorVR; | 140 Member<NavigatorVR> m_navigatorVR; |
137 unsigned m_displayId; | 141 unsigned m_displayId = 0; |
138 String m_displayName; | 142 String m_displayName; |
139 bool m_isConnected; | 143 bool m_isConnected = false; |
140 bool m_isPresenting; | 144 bool m_isPresenting = false; |
141 bool m_isValidDeviceForPresenting; | 145 bool m_isValidDeviceForPresenting = true; |
142 bool m_canUpdateFramePose; | |
143 Member<VRDisplayCapabilities> m_capabilities; | 146 Member<VRDisplayCapabilities> m_capabilities; |
144 Member<VRStageParameters> m_stageParameters; | 147 Member<VRStageParameters> m_stageParameters; |
145 Member<VREyeParameters> m_eyeParametersLeft; | 148 Member<VREyeParameters> m_eyeParametersLeft; |
146 Member<VREyeParameters> m_eyeParametersRight; | 149 Member<VREyeParameters> m_eyeParametersRight; |
147 device::mojom::blink::VRPosePtr m_framePose; | 150 device::mojom::blink::VRPosePtr m_framePose; |
148 VRLayer m_layer; | 151 VRLayer m_layer; |
149 double m_depthNear; | 152 double m_depthNear = 0.01; |
150 double m_depthFar; | 153 double m_depthFar = 10000.0; |
151 | 154 |
152 void dispose(); | 155 void dispose(); |
153 | 156 |
154 Timer<VRDisplay> m_fullscreenCheckTimer; | 157 Timer<VRDisplay> m_fullscreenCheckTimer; |
155 String m_fullscreenOrigWidth; | 158 String m_fullscreenOrigWidth; |
156 String m_fullscreenOrigHeight; | 159 String m_fullscreenOrigHeight; |
157 gpu::gles2::GLES2Interface* m_contextGL; | 160 gpu::gles2::GLES2Interface* m_contextGL = nullptr; |
158 Member<WebGLRenderingContextBase> m_renderingContext; | 161 Member<WebGLRenderingContextBase> m_renderingContext; |
159 | 162 |
160 Member<ScriptedAnimationController> m_scriptedAnimationController; | 163 Member<ScriptedAnimationController> m_scriptedAnimationController; |
161 bool m_animationCallbackRequested; | 164 bool m_pendingRaf = false; |
162 bool m_inAnimationFrame; | 165 bool m_inAnimationFrame = false; |
163 bool m_displayBlurred; | 166 bool m_displayBlurred = false; |
164 bool m_reenteredFullscreen; | 167 bool m_reenteredFullscreen = false; |
168 double m_timebase = -1; | |
165 | 169 |
166 device::mojom::blink::VRDisplayPtr m_display; | 170 device::mojom::blink::VRDisplayPtr m_display; |
167 | 171 |
168 mojo::Binding<device::mojom::blink::VRDisplayClient> m_binding; | 172 mojo::Binding<device::mojom::blink::VRDisplayClient> m_displayClientBinding; |
173 device::mojom::blink::VRVSyncProviderPtr m_vrVSyncProvider; | |
169 | 174 |
170 HeapDeque<Member<ScriptPromiseResolver>> m_pendingPresentResolvers; | 175 HeapDeque<Member<ScriptPromiseResolver>> m_pendingPresentResolvers; |
171 }; | 176 }; |
172 | 177 |
173 using VRDisplayVector = HeapVector<Member<VRDisplay>>; | 178 using VRDisplayVector = HeapVector<Member<VRDisplay>>; |
174 | 179 |
175 enum class PresentationResult { | 180 enum class PresentationResult { |
176 Requested = 0, | 181 Requested = 0, |
177 Success = 1, | 182 Success = 1, |
178 SuccessAlreadyPresenting = 2, | 183 SuccessAlreadyPresenting = 2, |
179 VRDisplayCannotPresent = 3, | 184 VRDisplayCannotPresent = 3, |
180 PresentationNotSupportedByDisplay = 4, | 185 PresentationNotSupportedByDisplay = 4, |
181 VRDisplayNotFound = 5, | 186 VRDisplayNotFound = 5, |
182 NotInitiatedByUserGesture = 6, | 187 NotInitiatedByUserGesture = 6, |
183 InvalidNumberOfLayers = 7, | 188 InvalidNumberOfLayers = 7, |
184 InvalidLayerSource = 8, | 189 InvalidLayerSource = 8, |
185 LayerSourceMissingWebGLContext = 9, | 190 LayerSourceMissingWebGLContext = 9, |
186 InvalidLayerBounds = 10, | 191 InvalidLayerBounds = 10, |
187 ServiceInactive = 11, | 192 ServiceInactive = 11, |
188 RequestDenied = 12, | 193 RequestDenied = 12, |
189 PresentationResultMax, // Must be last member of enum. | 194 PresentationResultMax, // Must be last member of enum. |
190 }; | 195 }; |
191 | 196 |
192 void ReportPresentationResult(PresentationResult); | 197 void ReportPresentationResult(PresentationResult); |
193 | 198 |
194 } // namespace blink | 199 } // namespace blink |
195 | 200 |
196 #endif // VRDisplay_h | 201 #endif // VRDisplay_h |
OLD | NEW |