From 4321c5a62b873c82246f00a73bc194d6e0e56638 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Fri, 18 Mar 2016 15:59:48 -0700 Subject: [PATCH] OculusLegacyDisplayPlugin: fixes for macosx and linux --- interface/src/avatar/AvatarUpdate.cpp | 1 - .../src/OculusLegacyDisplayPlugin.cpp | 15 ++++++++------- .../oculusLegacy/src/OculusLegacyDisplayPlugin.h | 5 ++++- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/interface/src/avatar/AvatarUpdate.cpp b/interface/src/avatar/AvatarUpdate.cpp index 3e0d23cc1c..3b42b61fd2 100644 --- a/interface/src/avatar/AvatarUpdate.cpp +++ b/interface/src/avatar/AvatarUpdate.cpp @@ -30,7 +30,6 @@ void AvatarUpdate::synchronousProcess() { // Keep our own updated value, so that our asynchronous code can consult it. _isHMDMode = qApp->isHMDMode(); - auto frameCount = qApp->getFrameCount(); QSharedPointer manager = DependencyManager::get(); MyAvatar* myAvatar = manager->getMyAvatar(); diff --git a/plugins/oculusLegacy/src/OculusLegacyDisplayPlugin.cpp b/plugins/oculusLegacy/src/OculusLegacyDisplayPlugin.cpp index 2b0ace8bcc..c0d27f8699 100644 --- a/plugins/oculusLegacy/src/OculusLegacyDisplayPlugin.cpp +++ b/plugins/oculusLegacy/src/OculusLegacyDisplayPlugin.cpp @@ -35,14 +35,15 @@ void OculusLegacyDisplayPlugin::resetSensors() { ovrHmd_RecenterPose(_hmd); } +glm::mat4 OculusLegacyDisplayPlugin::updateHeadPose(uint32_t frameIndex) { + Lock lock(_mutex); + _trackingState = ovrHmd_GetTrackingState(_hmd, ovr_GetTimeInSeconds()); + lastFrameSeen = frameIndex; + _headPoseCache.set(toGlm(_trackingState.HeadPose.ThePose)); +} + glm::mat4 OculusLegacyDisplayPlugin::getHeadPose(uint32_t frameIndex) const { - static uint32_t lastFrameSeen = 0; - if (frameIndex > lastFrameSeen) { - Lock lock(_mutex); - _trackingState = ovrHmd_GetTrackingState(_hmd, ovr_GetTimeInSeconds()); - lastFrameSeen = frameIndex; - } - return toGlm(_trackingState.HeadPose.ThePose); + return _headPoseCache.get(); } bool OculusLegacyDisplayPlugin::isSupported() const { diff --git a/plugins/oculusLegacy/src/OculusLegacyDisplayPlugin.h b/plugins/oculusLegacy/src/OculusLegacyDisplayPlugin.h index f7d1be0244..4f13c49f2f 100644 --- a/plugins/oculusLegacy/src/OculusLegacyDisplayPlugin.h +++ b/plugins/oculusLegacy/src/OculusLegacyDisplayPlugin.h @@ -8,6 +8,7 @@ #pragma once #include +#include #include @@ -26,7 +27,8 @@ public: // Stereo specific methods virtual void resetSensors() override; - virtual glm::mat4 getHeadPose(uint32_t frameIndex) const override; + virtual void updateHeadPose(uint32_t frameIndex) override; + virtual glm::mat4 getHeadPose() const override; virtual float getTargetFrameRate() override; @@ -52,6 +54,7 @@ private: //ovrTexture _eyeTextures[2]; // FIXME - not currently in use mutable int _hmdScreen { -1 }; bool _hswDismissed { false }; + ThreadSafeValueCache _headPoseCache { glm::mat4() }; };