| 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 #include "modules/vr/VRDisplay.h" | 5 #include "modules/vr/VRDisplay.h" |
| 6 | 6 |
| 7 #include "core/css/StylePropertySet.h" | 7 #include "core/css/StylePropertySet.h" |
| 8 #include "core/dom/DOMException.h" | 8 #include "core/dom/DOMException.h" |
| 9 #include "core/dom/DocumentUserGestureToken.h" | 9 #include "core/dom/DocumentUserGestureToken.h" |
| 10 #include "core/dom/FrameRequestCallback.h" | 10 #include "core/dom/FrameRequestCallback.h" |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 OnPresentChange(); | 107 OnPresentChange(); |
| 108 } | 108 } |
| 109 } | 109 } |
| 110 | 110 |
| 111 void VRDisplay::disconnected() { | 111 void VRDisplay::disconnected() { |
| 112 if (m_isConnected) | 112 if (m_isConnected) |
| 113 m_isConnected = !m_isConnected; | 113 m_isConnected = !m_isConnected; |
| 114 } | 114 } |
| 115 | 115 |
| 116 bool VRDisplay::getFrameData(VRFrameData* frameData) { | 116 bool VRDisplay::getFrameData(VRFrameData* frameData) { |
| 117 if (!m_framePose || m_displayBlurred) | 117 if (!m_navigatorVR->isFocused() || !m_framePose || m_displayBlurred) |
| 118 return false; | 118 return false; |
| 119 | 119 |
| 120 if (!frameData) | 120 if (!frameData) |
| 121 return false; | 121 return false; |
| 122 | 122 |
| 123 if (m_depthNear == m_depthFar) | 123 if (m_depthNear == m_depthFar) |
| 124 return false; | 124 return false; |
| 125 | 125 |
| 126 return frameData->update(m_framePose, m_eyeParametersLeft, | 126 return frameData->update(m_framePose, m_eyeParametersLeft, |
| 127 m_eyeParametersRight, m_depthNear, m_depthFar); | 127 m_eyeParametersRight, m_depthNear, m_depthFar); |
| 128 } | 128 } |
| 129 | 129 |
| 130 VRPose* VRDisplay::getPose() { | 130 VRPose* VRDisplay::getPose() { |
| 131 if (!m_framePose || m_displayBlurred) | 131 if (!m_navigatorVR->isFocused() || !m_framePose || m_displayBlurred) |
| 132 return nullptr; | 132 return nullptr; |
| 133 | 133 |
| 134 VRPose* pose = VRPose::create(); | 134 VRPose* pose = VRPose::create(); |
| 135 pose->setPose(m_framePose); | 135 pose->setPose(m_framePose); |
| 136 return pose; | 136 return pose; |
| 137 } | 137 } |
| 138 | 138 |
| 139 void VRDisplay::resetPose() { | 139 void VRDisplay::resetPose() { |
| 140 if (!m_display) | 140 if (!m_display) |
| 141 return; | 141 return; |
| (...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 | 665 |
| 666 AutoReset<bool> animating(&m_inAnimationFrame, true); | 666 AutoReset<bool> animating(&m_inAnimationFrame, true); |
| 667 m_framePose = std::move(pose); | 667 m_framePose = std::move(pose); |
| 668 m_frameId = frameId; | 668 m_frameId = frameId; |
| 669 m_pendingRaf = false; | 669 m_pendingRaf = false; |
| 670 m_scriptedAnimationController->serviceScriptedAnimations( | 670 m_scriptedAnimationController->serviceScriptedAnimations( |
| 671 m_timebase + timeDelta.InSecondsF()); | 671 m_timebase + timeDelta.InSecondsF()); |
| 672 } | 672 } |
| 673 | 673 |
| 674 void VRDisplay::ConnectVSyncProvider() { | 674 void VRDisplay::ConnectVSyncProvider() { |
| 675 if (!m_navigatorVR->isFocused()) |
| 676 return; |
| 675 m_display->GetVRVSyncProvider(mojo::MakeRequest(&m_vrVSyncProvider)); | 677 m_display->GetVRVSyncProvider(mojo::MakeRequest(&m_vrVSyncProvider)); |
| 676 if (m_pendingRaf && !m_displayBlurred) { | 678 if (m_pendingRaf && !m_displayBlurred) { |
| 677 m_vrVSyncProvider->GetVSync(convertToBaseCallback( | 679 m_vrVSyncProvider->GetVSync(convertToBaseCallback( |
| 678 WTF::bind(&VRDisplay::OnVSync, wrapWeakPersistent(this)))); | 680 WTF::bind(&VRDisplay::OnVSync, wrapWeakPersistent(this)))); |
| 679 } | 681 } |
| 680 } | 682 } |
| 681 | 683 |
| 682 void VRDisplay::onFullscreenCheck(TimerBase*) { | 684 void VRDisplay::onFullscreenCheck(TimerBase*) { |
| 683 if (!m_isPresenting) { | 685 if (!m_isPresenting) { |
| 684 m_fullscreenCheckTimer.stop(); | 686 m_fullscreenCheckTimer.stop(); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 740 forceExitPresent(); | 742 forceExitPresent(); |
| 741 m_scriptedAnimationController.clear(); | 743 m_scriptedAnimationController.clear(); |
| 742 } | 744 } |
| 743 | 745 |
| 744 bool VRDisplay::hasPendingActivity() const { | 746 bool VRDisplay::hasPendingActivity() const { |
| 745 // Prevent V8 from garbage collecting the wrapper object if there are | 747 // Prevent V8 from garbage collecting the wrapper object if there are |
| 746 // event listeners attached to it. | 748 // event listeners attached to it. |
| 747 return getExecutionContext() && hasEventListeners(); | 749 return getExecutionContext() && hasEventListeners(); |
| 748 } | 750 } |
| 749 | 751 |
| 752 void VRDisplay::focusChanged() { |
| 753 // TODO(mthiesse): Blur/focus the display. |
| 754 m_vrVSyncProvider.reset(); |
| 755 ConnectVSyncProvider(); |
| 756 } |
| 757 |
| 750 DEFINE_TRACE(VRDisplay) { | 758 DEFINE_TRACE(VRDisplay) { |
| 751 EventTargetWithInlineData::trace(visitor); | 759 EventTargetWithInlineData::trace(visitor); |
| 752 ContextLifecycleObserver::trace(visitor); | 760 ContextLifecycleObserver::trace(visitor); |
| 753 visitor->trace(m_navigatorVR); | 761 visitor->trace(m_navigatorVR); |
| 754 visitor->trace(m_capabilities); | 762 visitor->trace(m_capabilities); |
| 755 visitor->trace(m_stageParameters); | 763 visitor->trace(m_stageParameters); |
| 756 visitor->trace(m_eyeParametersLeft); | 764 visitor->trace(m_eyeParametersLeft); |
| 757 visitor->trace(m_eyeParametersRight); | 765 visitor->trace(m_eyeParametersRight); |
| 758 visitor->trace(m_layer); | 766 visitor->trace(m_layer); |
| 759 visitor->trace(m_renderingContext); | 767 visitor->trace(m_renderingContext); |
| 760 visitor->trace(m_scriptedAnimationController); | 768 visitor->trace(m_scriptedAnimationController); |
| 761 visitor->trace(m_pendingPresentResolvers); | 769 visitor->trace(m_pendingPresentResolvers); |
| 762 } | 770 } |
| 763 | 771 |
| 764 } // namespace blink | 772 } // namespace blink |
| OLD | NEW |