cherrypick CL11395840 (Fix for Audio hang on exit)

#jira UE-87178
#rb ethan.geller aaron.mcleran

#ROBOMERGE-SOURCE: CL 11963232 in //UE4/Release-4.25/...
#ROBOMERGE-BOT: RELEASE (Release-4.25 -> Release-4.25Plus) (v656-11643781)

[CL 11963279 by jimmy smith in 4.25-Plus branch]
This commit is contained in:
jimmy smith
2020-03-05 16:16:36 -05:00
parent 6c8a570af9
commit 809409b143
3 changed files with 16 additions and 4 deletions

View File

@@ -65,6 +65,13 @@ FAutoConsoleVariableRef CVarUnderrunTimeout(
TEXT("Amount of time to wait for the render thread to generate the next buffer before submitting an underrun buffer. \n"),
ECVF_Default);
static int32 FadeoutTimeoutCVar = 2000;
FAutoConsoleVariableRef CVarFadeoutTimeout(
TEXT("au.FadeOutTimeoutMSec"),
FadeoutTimeoutCVar,
TEXT("Amount of time to wait for the FadeOut Event to fire. \n"),
ECVF_Default);
static float LinearGainScalarForFinalOututCVar = 1.0f;
FAutoConsoleVariableRef LinearGainScalarForFinalOutut(
TEXT("au.LinearGainScalarForFinalOutut"),
@@ -344,8 +351,11 @@ namespace Audio
bPerformingFade = true;
if (AudioFadeEvent != nullptr)
{
AudioFadeEvent->Wait(1000);
{
if (!AudioFadeEvent->Wait(FadeoutTimeoutCVar))
{
UE_LOG(LogAudioMixer, Warning, TEXT("FadeOutEvent timed out"));
}
}
FadeVolume = 0.0f;

View File

@@ -489,10 +489,10 @@ namespace Audio
void ReadNextBuffer();
/** Reset the fade state (use if reusing audio platform interface, e.g. in main audio device. */
void FadeIn();
virtual void FadeIn();
/** Start a fadeout. Prevents pops during shutdown. */
void FadeOut();
virtual void FadeOut();
/** Returns the last error generated. */
FString GetLastError() const { return LastError; }

View File

@@ -46,6 +46,8 @@ namespace Audio
virtual FAudioPlatformSettings GetPlatformSettings() const override;
virtual void OnHardwareUpdate() override;
virtual bool IsNonRealtime() const override;
virtual void FadeOut() override {}
virtual void FadeIn() override {}
//~ End IAudioMixerPlatformInterface
private: