зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1349414 - Allow updating VR controllers at the non-presenting mode; r=kip
MozReview-Commit-ID: CA6YxLxySDi --HG-- extra : rebase_source : 058b8aebdf8d13e22d2c25bdf037094ca1e52f4b
This commit is contained in:
Родитель
48061f481f
Коммит
a5e10d768b
|
@ -200,15 +200,26 @@ VRManager::NotifyVsync(const TimeStamp& aVsyncTimestamp)
|
|||
mLastRefreshTime = TimeStamp::Now();
|
||||
}
|
||||
}
|
||||
|
||||
if (bHaveControllerListener) {
|
||||
for (const auto& manager: mManagers) {
|
||||
if (!manager->GetIsPresenting()) {
|
||||
manager->HandleInput();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
VRManager::NotifyVRVsync(const uint32_t& aDisplayID)
|
||||
{
|
||||
for (uint32_t i = 0; i < mManagers.Length(); ++i) {
|
||||
mManagers[i]->HandleInput();
|
||||
for (const auto& manager: mManagers) {
|
||||
if (manager->GetIsPresenting()) {
|
||||
manager->HandleInput();
|
||||
}
|
||||
}
|
||||
|
||||
for (auto iter = mVRManagerParents.Iter(); !iter.Done(); iter.Next()) {
|
||||
Unused << iter.Get()->GetKey()->SendNotifyVRVSync(aDisplayID);
|
||||
}
|
||||
|
|
|
@ -251,6 +251,7 @@ public:
|
|||
virtual bool Init() = 0;
|
||||
virtual void Destroy() = 0;
|
||||
virtual void GetHMDs(nsTArray<RefPtr<VRDisplayHost>>& aHMDResult) = 0;
|
||||
virtual bool GetIsPresenting() = 0;
|
||||
virtual void HandleInput() = 0;
|
||||
virtual void GetControllers(nsTArray<RefPtr<VRControllerHost>>& aControllerResult) = 0;
|
||||
virtual void ScanForControllers() = 0;
|
||||
|
|
|
@ -526,6 +526,17 @@ VRSystemManagerOSVR::GetHMDs(nsTArray<RefPtr<VRDisplayHost>>& aHMDResult)
|
|||
}
|
||||
}
|
||||
|
||||
bool
|
||||
VRSystemManagerOSVR::GetIsPresenting()
|
||||
{
|
||||
if (mHMDInfo) {
|
||||
VRDisplayInfo displayInfo(mHMDInfo->GetDisplayInfo());
|
||||
return displayInfo.GetIsPresenting();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
VRSystemManagerOSVR::HandleInput()
|
||||
{
|
||||
|
|
|
@ -67,6 +67,7 @@ public:
|
|||
virtual bool Init() override;
|
||||
virtual void Destroy() override;
|
||||
virtual void GetHMDs(nsTArray<RefPtr<VRDisplayHost>>& aHMDResult) override;
|
||||
virtual bool GetIsPresenting() override;
|
||||
virtual void HandleInput() override;
|
||||
virtual void GetControllers(nsTArray<RefPtr<VRControllerHost>>&
|
||||
aControllerResult) override;
|
||||
|
|
|
@ -1048,6 +1048,17 @@ VRSystemManagerOculus::GetHMDs(nsTArray<RefPtr<VRDisplayHost>>& aHMDResult)
|
|||
}
|
||||
}
|
||||
|
||||
bool
|
||||
VRSystemManagerOculus::GetIsPresenting()
|
||||
{
|
||||
if (mHMDInfo) {
|
||||
VRDisplayInfo displayInfo(mHMDInfo->GetDisplayInfo());
|
||||
return displayInfo.GetIsPresenting();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
VRSystemManagerOculus::HandleInput()
|
||||
{
|
||||
|
|
|
@ -123,6 +123,7 @@ public:
|
|||
virtual bool Init() override;
|
||||
virtual void Destroy() override;
|
||||
virtual void GetHMDs(nsTArray<RefPtr<VRDisplayHost> >& aHMDResult) override;
|
||||
virtual bool GetIsPresenting() override;
|
||||
virtual void HandleInput() override;
|
||||
virtual void GetControllers(nsTArray<RefPtr<VRControllerHost>>&
|
||||
aControllerResult) override;
|
||||
|
|
|
@ -523,6 +523,17 @@ VRSystemManagerOpenVR::GetHMDs(nsTArray<RefPtr<VRDisplayHost>>& aHMDResult)
|
|||
}
|
||||
}
|
||||
|
||||
bool
|
||||
VRSystemManagerOpenVR::GetIsPresenting()
|
||||
{
|
||||
if (mOpenVRHMD) {
|
||||
VRDisplayInfo displayInfo(mOpenVRHMD->GetDisplayInfo());
|
||||
return displayInfo.GetIsPresenting();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
VRSystemManagerOpenVR::HandleInput()
|
||||
{
|
||||
|
|
|
@ -97,6 +97,7 @@ public:
|
|||
virtual bool Init() override;
|
||||
virtual void Destroy() override;
|
||||
virtual void GetHMDs(nsTArray<RefPtr<VRDisplayHost> >& aHMDResult) override;
|
||||
virtual bool GetIsPresenting() override;
|
||||
virtual void HandleInput() override;
|
||||
virtual void GetControllers(nsTArray<RefPtr<VRControllerHost>>&
|
||||
aControllerResult) override;
|
||||
|
|
|
@ -341,6 +341,17 @@ VRSystemManagerPuppet::GetHMDs(nsTArray<RefPtr<VRDisplayHost>>& aHMDResult)
|
|||
aHMDResult.AppendElement(mPuppetHMD);
|
||||
}
|
||||
|
||||
bool
|
||||
VRSystemManagerPuppet::GetIsPresenting()
|
||||
{
|
||||
if (mPuppetHMD) {
|
||||
VRDisplayInfo displayInfo(mPuppetHMD->GetDisplayInfo());
|
||||
return displayInfo.GetIsPresenting();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
VRSystemManagerPuppet::HandleInput()
|
||||
{
|
||||
|
|
|
@ -89,6 +89,7 @@ public:
|
|||
virtual bool Init() override;
|
||||
virtual void Destroy() override;
|
||||
virtual void GetHMDs(nsTArray<RefPtr<VRDisplayHost>>& aHMDResult) override;
|
||||
virtual bool GetIsPresenting() override;
|
||||
virtual void HandleInput() override;
|
||||
virtual void GetControllers(nsTArray<RefPtr<VRControllerHost>>&
|
||||
aControllerResult) override;
|
||||
|
|
|
@ -443,7 +443,8 @@ VRManagerParent::SendGamepadUpdate(const GamepadChangeEvent& aGamepadEvent)
|
|||
{
|
||||
// GamepadManager only exists at the content process
|
||||
// or the same process in non-e10s mode.
|
||||
if (mIsContentChild || IsSameProcess()) {
|
||||
if (mHaveControllerListener &&
|
||||
(mIsContentChild || IsSameProcess())) {
|
||||
return PVRManagerParent::SendGamepadUpdate(aGamepadEvent);
|
||||
} else {
|
||||
return true;
|
||||
|
|
Загрузка…
Ссылка в новой задаче