Bläddra i källkod

Cherry picking 2409 audio system fix (#18188)

Signed-off-by: AMZN-Gene <[email protected]>
Gene Walters 11 månader sedan
förälder
incheckning
ac9f286cf0

+ 1 - 1
Gems/AudioSystem/Code/Source/Engine/AudioSystem.cpp

@@ -240,7 +240,7 @@ namespace Audio
         if (!handleBlockingRequest)
         {
             auto endUpdateTime = AZStd::chrono::steady_clock::now();      // stamp the end time
-            auto elapsedUpdateTime = AZStd::chrono::duration_cast<duration_ms>(endUpdateTime - startUpdateTime);
+            auto elapsedUpdateTime = AZStd::chrono::duration_cast<AZStd::chrono::microseconds>(endUpdateTime - startUpdateTime);
             if (elapsedUpdateTime < m_targetUpdatePeriod)
             {
                 AZ_PROFILE_SCOPE(Audio, "Wait Remaining Time in Update Period");

+ 3 - 2
Gems/AudioSystem/Code/Source/Engine/AudioSystem.h

@@ -107,8 +107,9 @@ namespace Audio
 
         bool m_bSystemInitialized;
 
-        using duration_ms = AZStd::chrono::duration<float, AZStd::milli>;
-        const duration_ms m_targetUpdatePeriod = AZStd::chrono::milliseconds(4);
+        // Using microseconds to allow sub-millisecond sleeping. 4000us is 4ms.
+        // chrono::microseconds is stored in 64-bit so can safely be added to epoch time (now) to produce absolute time.
+        const AZStd::chrono::microseconds m_targetUpdatePeriod = AZStd::chrono::microseconds(4000);
 
         CAudioTranslationLayer m_oATL;
         CAudioThread m_audioSystemThread;