diff --git a/stepmania/src/ScreenOptions.cpp b/stepmania/src/ScreenOptions.cpp index 04ece7a1b6..3ede862093 100644 --- a/stepmania/src/ScreenOptions.cpp +++ b/stepmania/src/ScreenOptions.cpp @@ -97,6 +97,8 @@ ScreenOptions::ScreenOptions( CString sClassName ) : ScreenWithMenuElements(sCla SEPARATE_EXIT_ROW_Y (m_sName,"SeparateExitRowY"), OPTION_ROW_TYPE (m_sName,"OptionRowType") { + m_fLockInputSecs = 0.0001f; // always lock for a tiny amount of time so that we throw away any queued inputs during the load. + LOG->Trace( "ScreenOptions::ScreenOptions()" ); } @@ -484,6 +486,8 @@ void ScreenOptions::Update( float fDeltaTime ) { //LOG->Trace( "ScreenOptions::Update(%f)", fDeltaTime ); + m_fLockInputSecs = max( 0, m_fLockInputSecs-fDeltaTime ); + ScreenWithMenuElements::Update( fDeltaTime ); } @@ -496,7 +500,7 @@ void ScreenOptions::Input( const DeviceInput& DeviceI, const InputEventType sele { /* Allow input when transitioning in (m_In.IsTransitioning()), but ignore it * when we're transitioning out. */ - if( m_Back.IsTransitioning() || m_Out.IsTransitioning() ) + if( m_Back.IsTransitioning() || m_Out.IsTransitioning() || m_fLockInputSecs > 0 ) return; if( selectType == IET_RELEASE ) diff --git a/stepmania/src/ScreenOptions.h b/stepmania/src/ScreenOptions.h index faecb0cb6f..5af6e4c6fa 100644 --- a/stepmania/src/ScreenOptions.h +++ b/stepmania/src/ScreenOptions.h @@ -140,6 +140,8 @@ protected: ThemeMetric SEPARATE_EXIT_ROW; ThemeMetric SEPARATE_EXIT_ROW_Y; ThemeMetric OPTION_ROW_TYPE; + + float m_fLockInputSecs; }; #endif diff --git a/stepmania/src/ScreenSelectMaster.cpp b/stepmania/src/ScreenSelectMaster.cpp index 8d54929bd3..7b12a5e723 100644 --- a/stepmania/src/ScreenSelectMaster.cpp +++ b/stepmania/src/ScreenSelectMaster.cpp @@ -260,6 +260,9 @@ void ScreenSelectMaster::Init() TweenOnScreen(); m_fLockInputSecs = (bool)OVERRIDE_LOCK_INPUT_SECONDS ? LOCK_INPUT_SECONDS : this->GetTweenTimeLeft(); + if( m_fLockInputSecs == 0 ) + m_fLockInputSecs = 0.0001f; // always lock for a tiny amount of time so that we throw away any queued inputs during the load. + } void ScreenSelectMaster::Update( float fDelta )