本文整理汇总了C++中VRManager::NotifyVsync方法的典型用法代码示例。如果您正苦于以下问题:C++ VRManager::NotifyVsync方法的具体用法?C++ VRManager::NotifyVsync怎么用?C++ VRManager::NotifyVsync使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VRManager
的用法示例。
在下文中一共展示了VRManager::NotifyVsync方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void
CompositorVsyncScheduler::DispatchVREvents(TimeStamp aVsyncTimestamp)
{
MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread());
VRManager* vm = VRManager::Get();
vm->NotifyVsync(aVsyncTimestamp);
}
示例2: IPC_OK
mozilla::ipc::IPCResult
VRManagerParent::RecvCreateVRServiceTestController(const nsCString& aID, const uint32_t& aPromiseID)
{
uint32_t controllerIdx = 1; // ID's are 1 based
nsTArray<VRControllerInfo> controllerInfoArray;
impl::VRControllerPuppet* controllerPuppet = nullptr;
VRManager* vm = VRManager::Get();
/**
* When running headless mochitests on some of our automated test
* infrastructure, 2d display vsyncs are not always generated.
* In this case, the test controllers can't be created immediately
* after the VR display was created as the state of the VR displays
* are updated during vsync.
* To workaround, we produce a vsync manually.
*/
vm->NotifyVsync(TimeStamp::Now());
// Get VRControllerPuppet from VRManager
vm->GetVRControllerInfo(controllerInfoArray);
for (auto& controllerInfo : controllerInfoArray) {
if (controllerInfo.GetType() == VRDeviceType::Puppet) {
if (controllerIdx == mControllerTestID) {
controllerPuppet = static_cast<impl::VRControllerPuppet*>(
vm->GetController(controllerInfo.GetControllerID()).get());
break;
}
++controllerIdx;
}
}
// We might not have a controllerPuppet if the test did
// not create a VR display first.
if (!controllerPuppet) {
// We send a device ID of "0" to indicate failure
if (SendReplyCreateVRServiceTestController(aID, aPromiseID, 0)) {
return IPC_OK();
}
} else {
if (!mVRControllerTests.Get(mControllerTestID, nullptr)) {
mVRControllerTests.Put(mControllerTestID, controllerPuppet);
}
if (SendReplyCreateVRServiceTestController(aID, aPromiseID, mControllerTestID)) {
++mControllerTestID;
return IPC_OK();
}
}
return IPC_FAIL(this, "SendReplyCreateVRServiceTestController fail");
}
示例3: lock
void
CompositorVsyncScheduler::DispatchVREvents(TimeStamp aVsyncTimestamp)
{
{
MonitorAutoLock lock(mCurrentVRListenerTaskMonitor);
mCurrentVRListenerTask = nullptr;
}
// This only allows to be called by CompositorVsyncScheduler::PostVRTask()
// When the process is going to shutdown, the runnable has chance to be executed
// by other threads, we only want it to be run at VRListenerThread.
if (!VRListenerThreadHolder::IsInVRListenerThread()) {
return;
}
VRManager* vm = VRManager::Get();
vm->NotifyVsync(aVsyncTimestamp);
}