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:
Daosheng Mu 2017-03-22 09:58:06 +08:00
Родитель 48061f481f
Коммит a5e10d768b
11 изменённых файлов: 66 добавлений и 5 удалений

Просмотреть файл

@ -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;