Chromium Code Reviews| 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 4810e4fa6c24817abeabd72c20f1899c1dfaa14f..01d251cd648319737abfb370e3ed2f04d07819f2 100644 |
| --- a/third_party/WebKit/Source/modules/vr/VRDisplay.cpp |
| +++ b/third_party/WebKit/Source/modules/vr/VRDisplay.cpp |
| @@ -114,7 +114,7 @@ void VRDisplay::disconnected() { |
| } |
| bool VRDisplay::getFrameData(VRFrameData* frameData) { |
| - if (!m_framePose || m_displayBlurred) |
| + if (!m_navigatorVR->isFocused() || !m_framePose || m_displayBlurred) |
| return false; |
| if (!frameData) |
| @@ -128,7 +128,7 @@ bool VRDisplay::getFrameData(VRFrameData* frameData) { |
| } |
| VRPose* VRDisplay::getPose() { |
| - if (!m_framePose || m_displayBlurred) |
| + if (!m_navigatorVR->isFocused() || !m_framePose || m_displayBlurred) |
| return nullptr; |
| VRPose* pose = VRPose::create(); |
| @@ -672,6 +672,8 @@ void VRDisplay::OnVSync(device::mojom::blink::VRPosePtr pose, |
| } |
| void VRDisplay::ConnectVSyncProvider() { |
| + if (!m_navigatorVR->isFocused()) |
| + return; |
| m_display->GetVRVSyncProvider(mojo::MakeRequest(&m_vrVSyncProvider)); |
| if (m_pendingRaf && !m_displayBlurred) { |
| m_vrVSyncProvider->GetVSync(convertToBaseCallback( |
| @@ -747,6 +749,14 @@ bool VRDisplay::hasPendingActivity() const { |
| return getExecutionContext() && hasEventListeners(); |
| } |
| +void VRDisplay::focusChanged() { |
| + // TODO(mthiesse): Blur/focus the display. |
| + m_vrVSyncProvider.reset(); |
| + if (m_navigatorVR->isFocused()) { |
|
jbroman
2017/02/06 15:34:18
nit: This check seems redundant with the one in Co
mthiesse
2017/02/06 16:37:47
Removed redundant check.
|
| + ConnectVSyncProvider(); |
| + } |
| +} |
| + |
| DEFINE_TRACE(VRDisplay) { |
| EventTargetWithInlineData::trace(visitor); |
| ContextLifecycleObserver::trace(visitor); |