From 65fb1320ccf4827e22b1b575527871ca52f9627c Mon Sep 17 00:00:00 2001
From: ArcadeFever <arc8defever@gmail.com>
Date: Tue, 15 Dec 2020 00:04:59 -0800
Subject: [PATCH] Upgraded Oculus SDKs to latest

---
 cmake/macros/TargetOculusMobile.cmake          |  4 ++--
 hifi_android.py                                | 12 ++++++------
 libraries/oculusMobile/src/ovr/Helpers.h       |  6 +++---
 libraries/oculusMobile/src/ovr/VrHandler.cpp   |  2 +-
 .../src/OculusMobileControllerManager.cpp      | 18 +++++++++---------
 5 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/cmake/macros/TargetOculusMobile.cmake b/cmake/macros/TargetOculusMobile.cmake
index f5229845a9..34d5e33058 100644
--- a/cmake/macros/TargetOculusMobile.cmake
+++ b/cmake/macros/TargetOculusMobile.cmake
@@ -1,6 +1,6 @@
 
 macro(target_oculus_mobile)
-    set(INSTALL_DIR ${HIFI_ANDROID_PRECOMPILED}/oculus_1.22/VrApi)
+    set(INSTALL_DIR ${HIFI_ANDROID_PRECOMPILED}/ovr_sdk_mobile_1.37.0/VrApi)
 
     # Mobile SDK
     set(OVR_MOBILE_INCLUDE_DIRS ${INSTALL_DIR}/Include)
@@ -12,7 +12,7 @@ macro(target_oculus_mobile)
     target_link_libraries(${TARGET_NAME} ${OVR_MOBILE_LIBRARIES})
 
     # Platform SDK
-    set(INSTALL_DIR ${HIFI_ANDROID_PRECOMPILED}/oculusPlatform)
+    set(INSTALL_DIR ${HIFI_ANDROID_PRECOMPILED}/ovr_platform_sdk_23.0.0)
     set(OVR_PLATFORM_INCLUDE_DIRS ${INSTALL_DIR}/Include)
     target_include_directories(${TARGET_NAME} PRIVATE ${OVR_PLATFORM_INCLUDE_DIRS})
     set(OVR_PLATFORM_LIBRARIES ${INSTALL_DIR}/Android/libs/arm64-v8a/libovrplatformloader.so)
diff --git a/hifi_android.py b/hifi_android.py
index 06640390d4..07ea00d270 100644
--- a/hifi_android.py
+++ b/hifi_android.py
@@ -39,15 +39,15 @@ ANDROID_PACKAGES = {
         'sharedLibFolder': 'lib',
         'includeLibs': ['libnvtt.so', 'libnvmath.so', 'libnvimage.so', 'libnvcore.so']
     },
-    'oculus_1.22': {
-        'file': 'ovr_sdk_mobile_1.22.zip',
-        'checksum': '1ac3c5b0521e5406f287f351015daff8',
+    'ovr_sdk_mobile_1.37.0': {
+        'file': 'ovr_sdk_mobile_1.37.0.zip',
+        'checksum': '6040e1966f335a3e5015295154cd7383',
         'sharedLibFolder': 'VrApi/Libs/Android/arm64-v8a/Release',
         'includeLibs': ['libvrapi.so']
     },
-    'oculusPlatform': {
-        'file': 'OVRPlatformSDK_v1.34.0.zip',
-        'checksum': '16e4c5f39520f122bc49cb6d5bb88289',
+    'ovr_platform_sdk_23.0.0': {
+        'file': 'ovr_platform_sdk_23.0.0.zip',
+        'checksum': '29d02b560f60d0fa7b8a64cd965dd55b',
         'sharedLibFolder': 'Android/libs/arm64-v8a',
         'includeLibs': ['libovrplatformloader.so']
     },
diff --git a/libraries/oculusMobile/src/ovr/Helpers.h b/libraries/oculusMobile/src/ovr/Helpers.h
index 2bd0b7f603..10058dbac8 100644
--- a/libraries/oculusMobile/src/ovr/Helpers.h
+++ b/libraries/oculusMobile/src/ovr/Helpers.h
@@ -31,9 +31,9 @@ static inline void for_each_eye(const std::function<void(ovrEye)>& f) {
     f(VRAPI_EYE_RIGHT);
 }
 
-static inline void for_each_hand(const std::function<void(ovrHandedness)>& f) {
-    f(VRAPI_HAND_LEFT);
-    f(VRAPI_HAND_RIGHT);
+static inline void for_each_hand(const std::function<void(ovrTrackedDeviceTypeId)>& f) {
+    f(VRAPI_TRACKED_DEVICE_HAND_LEFT);
+    f(VRAPI_TRACKED_DEVICE_HAND_RIGHT);
 }
 
 static inline glm::mat4 toGlm(const ovrMatrix4f& om) {
diff --git a/libraries/oculusMobile/src/ovr/VrHandler.cpp b/libraries/oculusMobile/src/ovr/VrHandler.cpp
index aff1f256b5..1fe4d19401 100644
--- a/libraries/oculusMobile/src/ovr/VrHandler.cpp
+++ b/libraries/oculusMobile/src/ovr/VrHandler.cpp
@@ -324,7 +324,7 @@ struct VrSurface : public TaskQueue {
                     vrapi_SetTrackingSpace( session, VRAPI_TRACKING_SPACE_LOCAL);
                     vrapi_SetPerfThread(session, VRAPI_PERF_THREAD_TYPE_RENDERER, gettid());
                     vrapi_SetClockLevels(session, 2, 4);
-                    vrapi_SetExtraLatencyMode(session, VRAPI_EXTRA_LATENCY_MODE_DYNAMIC);
+                    vrapi_SetExtraLatencyMode(session, VRAPI_EXTRA_LATENCY_MODE_ON);
                     // Generates a warning on the quest: "vrapi_SetDisplayRefreshRate: Dynamic Display Refresh Rate not supported"
                     // vrapi_SetDisplayRefreshRate(session, 72);
                 });
diff --git a/libraries/oculusMobilePlugin/src/OculusMobileControllerManager.cpp b/libraries/oculusMobilePlugin/src/OculusMobileControllerManager.cpp
index 705045b517..54a796954e 100644
--- a/libraries/oculusMobilePlugin/src/OculusMobileControllerManager.cpp
+++ b/libraries/oculusMobilePlugin/src/OculusMobileControllerManager.cpp
@@ -31,7 +31,7 @@ const quint64 LOST_TRACKING_DELAY = 3000000;
 
 namespace ovr {
 
-    controller::Pose toControllerPose(ovrHandedness hand, const ovrRigidBodyPosef& handPose) {
+    controller::Pose toControllerPose(ovrTrackedDeviceTypeId hand, const ovrRigidBodyPosef& handPose) {
         // When the sensor-to-world rotation is identity the coordinate axes look like this:
         //
         //                       user
@@ -111,7 +111,7 @@ namespace ovr {
         return pose;
     }
 
-    controller::Pose toControllerPose(ovrHandedness hand,
+    controller::Pose toControllerPose(ovrTrackedDeviceTypeId hand,
                                       const ovrRigidBodyPosef& handPose,
                                       const ovrRigidBodyPosef& lastHandPose) {
         static const glm::quat yFlip = glm::angleAxis(PI, Vectors::UNIT_Y);
@@ -165,9 +165,9 @@ public:
 
 private:
     void handlePose(float deltaTime, const controller::InputCalibrationData& inputCalibrationData,
-                    ovrHandedness hand, const ovrRigidBodyPosef& handPose);
+                    ovrTrackedDeviceTypeId hand, const ovrRigidBodyPosef& handPose);
     void handleRotationForUntrackedHand(const controller::InputCalibrationData& inputCalibrationData,
-                                        ovrHandedness hand, const ovrRigidBodyPosef& handPose);
+                                        ovrTrackedDeviceTypeId hand, const ovrRigidBodyPosef& handPose);
     void handleHeadPose(float deltaTime, const controller::InputCalibrationData& inputCalibrationData,
                         const ovrRigidBodyPosef& headPose);
 
@@ -379,9 +379,9 @@ void OculusMobileInputDevice::update(float deltaTime, const controller::InputCal
     handleHeadPose(deltaTime, inputCalibrationData, _headTracking.HeadPose);
 
     static const auto REQUIRED_HAND_STATUS = VRAPI_TRACKING_STATUS_ORIENTATION_TRACKED | VRAPI_TRACKING_STATUS_POSITION_TRACKED;
-    ovr::for_each_hand([&](ovrHandedness hand) {
-        size_t handIndex = (hand == VRAPI_HAND_LEFT) ? 0 : 1;
-        int controller = (hand == VRAPI_HAND_LEFT) ? controller::LEFT_HAND : controller::RIGHT_HAND;
+    ovr::for_each_hand([&](ovrTrackedDeviceTypeId hand) {
+        size_t handIndex = (hand == VRAPI_TRACKED_DEVICE_HAND_LEFT) ? 0 : 1;
+        int controller = (hand == VRAPI_TRACKED_DEVICE_HAND_LEFT) ? controller::LEFT_HAND : controller::RIGHT_HAND;
         auto& handData = _hands[handIndex];
         const auto& tracking = handData.tracking;
         ++numTrackedControllers;
@@ -476,7 +476,7 @@ void OculusMobileInputDevice::focusOutEvent() {
 
 void OculusMobileInputDevice::handlePose(float deltaTime,
                                                       const controller::InputCalibrationData& inputCalibrationData,
-                                                      ovrHandedness hand, const ovrRigidBodyPosef& handPose) {
+                                                      ovrTrackedDeviceTypeId hand, const ovrRigidBodyPosef& handPose) {
     auto poseId = (hand == VRAPI_HAND_LEFT) ? controller::LEFT_HAND : controller::RIGHT_HAND;
     auto& pose = _poseStateMap[poseId];
     pose = ovr::toControllerPose(hand, handPose);
@@ -507,7 +507,7 @@ void OculusMobileInputDevice::handleHeadPose(float deltaTime,
 }
 
 void OculusMobileInputDevice::handleRotationForUntrackedHand(const controller::InputCalibrationData& inputCalibrationData,
-                                                                          ovrHandedness hand, const ovrRigidBodyPosef& handPose) {
+                                                                          ovrTrackedDeviceTypeId hand, const ovrRigidBodyPosef& handPose) {
     auto poseId = (hand == VRAPI_HAND_LEFT ? controller::LEFT_HAND : controller::RIGHT_HAND);
     auto& pose = _poseStateMap[poseId];
     const auto& lastHandPose = (hand == VRAPI_HAND_LEFT) ? _hands[0].lastPose : _hands[1].lastPose;