diff --git a/stepmania/src/Screen.cpp b/stepmania/src/Screen.cpp index a4bdf51846..049dc0d045 100644 --- a/stepmania/src/Screen.cpp +++ b/stepmania/src/Screen.cpp @@ -66,7 +66,34 @@ void Screen::Update( float fDeltaTime ) unsigned i; for( i=0; i 0.0001f) + { + m_QueuedMessages[i].fDelayRemaining -= fDeltaTime; + m_QueuedMessages[i].fDelayRemaining = max(m_QueuedMessages[i].fDelayRemaining, 0.0001f); + } else { + /* Two 0.00008 delays add up to at least one 0.0001 delay, but don't count + * Update(0)s. This is hacky, until I figure out why the second frame + * delay is needed ... */ + m_QueuedMessages[i].fDelayRemaining -= max(fDeltaTime, 0.00008f); + } + } /* Now dispatch messages. If the number of messages on the queue changes * within HandleScreenMessage, someone cleared messages on the queue. This