mozilla::ipc::IPCResult VRManagerParent::RecvCreateVRServiceTestDisplay(const nsCString& aID, const uint32_t& aPromiseID) { nsTArray<VRDisplayInfo> displayInfoArray; impl::VRDisplayPuppet* displayPuppet = nullptr; VRManager* vm = VRManager::Get(); vm->RefreshVRDisplays(); // Get VRDisplayPuppet from VRManager vm->GetVRDisplayInfo(displayInfoArray); for (auto& displayInfo : displayInfoArray) { if (displayInfo.GetType() == VRDeviceType::Puppet) { displayPuppet = static_cast<impl::VRDisplayPuppet*>( vm->GetDisplay(displayInfo.GetDisplayID()).get()); break; } } MOZ_ASSERT(displayPuppet); MOZ_ASSERT(!mDisplayTestID); // We have only one display in VRSystemManagerPuppet. if (!mVRDisplayTests.Get(mDisplayTestID, nullptr)) { mVRDisplayTests.Put(mDisplayTestID, displayPuppet); } if (SendReplyCreateVRServiceTestDisplay(aID, aPromiseID, mDisplayTestID)) { return IPC_OK(); } return IPC_FAIL(this, "SendReplyCreateVRServiceTestController fail"); }
bool VRManagerParent::RecvRefreshDisplays() { // This is called to refresh the VR Displays for Navigator.GetVRDevices(). // We must pass "true" to VRManager::RefreshVRDisplays() // to ensure that the promise returned by Navigator.GetVRDevices // can resolve even if there are no changes to the VR Displays. VRManager* vm = VRManager::Get(); vm->RefreshVRDisplays(true); return true; }
void VRDisplayHost::RemoveLayer(VRLayerParent *aLayer) { mLayers.RemoveElement(aLayer); if (mLayers.Length() == 0) { StopPresentation(); } mDisplayInfo.mIsPresenting = mLayers.Length() > 0; // Ensure that the content process receives the change immediately VRManager* vm = VRManager::Get(); vm->RefreshVRDisplays(); }
void VRDisplayHost::AddLayer(VRLayerParent *aLayer) { mLayers.AppendElement(aLayer); mDisplayInfo.mPresentingGroups |= aLayer->GetGroup(); if (mLayers.Length() == 1) { StartPresentation(); } // Ensure that the content process receives the change immediately VRManager* vm = VRManager::Get(); vm->RefreshVRDisplays(); }
mozilla::ipc::IPCResult VRManagerParent::RecvRefreshDisplays() { // TODO: Bug 1406327, Launch VR listener thread here. MOZ_ASSERT(VRListenerThreadHolder::IsInVRListenerThread()); // This is called to refresh the VR Displays for Navigator.GetVRDevices(). // We must pass "true" to VRManager::RefreshVRDisplays() // to ensure that the promise returned by Navigator.GetVRDevices // can resolve even if there are no changes to the VR Displays. VRManager* vm = VRManager::Get(); vm->RefreshVRDisplays(true); return IPC_OK(); }
void VRDisplayHost::RemoveLayer(VRLayerParent *aLayer) { mLayers.RemoveElement(aLayer); if (mLayers.Length() == 0) { StopPresentation(); } mDisplayInfo.mPresentingGroups = 0; for (auto layer : mLayers) { mDisplayInfo.mPresentingGroups |= layer->GetGroup(); } // Ensure that the content process receives the change immediately VRManager* vm = VRManager::Get(); vm->RefreshVRDisplays(); }