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

Unified Diff: third_party/WebKit/Source/modules/vr/VRDisplay.cpp

Issue 2331553002: Update WebVR interface to match the 1.1 spec (Closed)
Patch Set: Removed dependency on TaskObserver Created 4 years, 3 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
Index: third_party/WebKit/Source/modules/vr/VRDisplay.cpp
diff --git a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
index ad76fa1bde27e0eb040af2ef5d7de36536dabb3c..84d9fcf686913f0e557a7eb6fdadaf02f706e0d2 100644
--- a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
+++ b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
@@ -11,6 +11,7 @@
#include "modules/vr/VRController.h"
#include "modules/vr/VRDisplayCapabilities.h"
#include "modules/vr/VREyeParameters.h"
+#include "modules/vr/VRFrameData.h"
#include "modules/vr/VRLayer.h"
#include "modules/vr/VRPose.h"
#include "modules/vr/VRStageParameters.h"
@@ -42,6 +43,8 @@ VRDisplay::VRDisplay(NavigatorVR* navigatorVR)
, m_capabilities(new VRDisplayCapabilities())
, m_eyeParametersLeft(new VREyeParameters())
, m_eyeParametersRight(new VREyeParameters())
+ , m_depthNear(0.01)
+ , m_depthFar(10000.0)
, m_fullscreenCheckTimer(this, &VRDisplay::onFullscreenCheck)
{
}
@@ -79,21 +82,36 @@ void VRDisplay::update(const device::blink::VRDisplayPtr& display)
}
}
-VRPose* VRDisplay::getPose()
+bool VRDisplay::getFrameData(VRFrameData* frameData)
{
if (m_canUpdateFramePose) {
mthiesse 2016/09/12 15:58:40 Extract this block into a separate function? It's
- m_framePose = getImmediatePose();
- Platform::current()->currentThread()->addTaskObserver(this);
- m_canUpdateFramePose = false;
+ m_framePose = controller()->getPose(m_displayId);
+ if (m_isPresenting)
+ m_canUpdateFramePose = false;
}
- return m_framePose;
+ if (!frameData)
+ return false;
+
+ if (m_depthNear == m_depthFar)
+ return false;
+
+ return frameData->update(m_framePose, m_eyeParametersLeft, m_eyeParametersRight, m_depthNear, m_depthFar);
}
-VRPose* VRDisplay::getImmediatePose()
+VRPose* VRDisplay::getPose()
mthiesse 2016/09/12 15:58:40 Not sure where to leave this comment for https://w
{
+ if (m_canUpdateFramePose) {
+ m_framePose = controller()->getPose(m_displayId);
+ if (m_isPresenting)
+ m_canUpdateFramePose = false;
+ }
+
+ if (!m_framePose)
+ return nullptr;
+
VRPose* pose = VRPose::create();
mthiesse 2016/09/12 15:58:40 Do you need to create a new VRPose if you haven't
- pose->setPose(controller()->getPose(m_displayId));
+ pose->setPose(m_framePose);
return pose;
}
@@ -268,18 +286,10 @@ HeapVector<VRLayer> VRDisplay::getLayers()
return layers;
}
-void VRDisplay::submitFrame(VRPose* pose)
+void VRDisplay::submitFrame()
{
controller()->submitFrame(m_displayId);
-}
-
-void VRDisplay::didProcessTask()
-{
- // Pose should be stable until control is returned to the user agent.
- if (!m_canUpdateFramePose) {
- Platform::current()->currentThread()->removeTaskObserver(this);
- m_canUpdateFramePose = true;
- }
+ m_canUpdateFramePose = true;
}
void VRDisplay::onFullscreenCheck(TimerBase*)
@@ -304,7 +314,6 @@ DEFINE_TRACE(VRDisplay)
visitor->trace(m_stageParameters);
visitor->trace(m_eyeParametersLeft);
visitor->trace(m_eyeParametersRight);
- visitor->trace(m_framePose);
visitor->trace(m_layer);
}
« no previous file with comments | « third_party/WebKit/Source/modules/vr/VRDisplay.h ('k') | third_party/WebKit/Source/modules/vr/VRDisplay.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698