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

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

Issue 2309523003: Plumbing through more WebVR presentation code (Closed)
Patch Set: Addressed Michael's feedack 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
« no previous file with comments | « third_party/WebKit/Source/modules/vr/VRController.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 a2479acca66daffd073cb2dcba9be8e51e203414..8ad6ddf665e090a0d4c501baf0322865d6d83a12 100644
--- a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
+++ b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp
@@ -181,10 +181,44 @@ ScriptPromise VRDisplay::requestPresent(ScriptState* scriptState, const HeapVect
// Check to see if the canvas is still the current fullscreen
// element once per second.
m_fullscreenCheckTimer.startRepeating(1.0, BLINK_FROM_HERE);
+
+ controller()->requestPresent(m_displayId);
} else {
DOMException* exception = DOMException::create(InvalidStateError, "VR Presentation not implemented for this VRDisplay.");
resolver->reject(exception);
}
+
+ // Set up the texture bounds for the provided layer
+ device::blink::VRLayerBoundsPtr leftBounds = device::blink::VRLayerBounds::New();
+ device::blink::VRLayerBoundsPtr rightBounds = device::blink::VRLayerBounds::New();
+
+ if (m_layer.hasLeftBounds()) {
+ leftBounds->left = m_layer.leftBounds()[0];
+ leftBounds->top = m_layer.leftBounds()[1];
+ leftBounds->width = m_layer.leftBounds()[2];
+ leftBounds->height = m_layer.leftBounds()[3];
+ } else {
+ // Left eye defaults
+ leftBounds->left = 0.0f;
+ leftBounds->top = 0.0f;
+ leftBounds->width = 0.5f;
+ leftBounds->height = 1.0f;
+ }
+
+ if (m_layer.hasRightBounds()) {
+ rightBounds->left = m_layer.rightBounds()[0];
+ rightBounds->top = m_layer.rightBounds()[1];
+ rightBounds->width = m_layer.rightBounds()[2];
+ rightBounds->height = m_layer.rightBounds()[3];
+ } else {
+ // Right eye defaults
+ rightBounds->left = 0.5f;
+ rightBounds->top = 0.0f;
+ rightBounds->width = 0.5f;
+ rightBounds->height = 1.0f;
+ }
+
+ controller()->updateLayerBounds(m_displayId, std::move(leftBounds), std::move(rightBounds));
} else {
DOMException* exception = DOMException::create(InvalidStateError, "Invalid layer source.");
resolver->reject(exception);
@@ -208,6 +242,7 @@ ScriptPromise VRDisplay::exitPresent(ScriptState* scriptState)
if (!m_capabilities->hasExternalDisplay()) {
Fullscreen::fullyExitFullscreen(m_layer.source()->document());
m_fullscreenCheckTimer.stop();
+ controller()->exitPresent(m_displayId);
} else {
// Can't get into this presentation mode, so nothing to do here.
}
@@ -235,6 +270,7 @@ HeapVector<VRLayer> VRDisplay::getLayers()
void VRDisplay::submitFrame(VRPose* pose)
{
+ controller()->submitFrame(m_displayId);
}
void VRDisplay::didProcessTask()
@@ -257,6 +293,7 @@ void VRDisplay::onFullscreenCheck(TimerBase*)
m_isPresenting = false;
m_navigatorVR->fireVRDisplayPresentChange(this);
m_fullscreenCheckTimer.stop();
+ controller()->exitPresent(m_displayId);
}
}
« no previous file with comments | « third_party/WebKit/Source/modules/vr/VRController.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698