Skip to content

Commit 88f596f

Browse files
committed
Fix decoupling clock drifting during decoupled mode execution
1 parent 5419d2f commit 88f596f

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

osu.Framework/Timing/DecouplingFramedClock.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ public void ProcessFrame()
9494

9595
(Source as IFrameBasedClock)?.ProcessFrame();
9696

97+
double referenceTime = realtimeReferenceClock.CurrentTime;
98+
9799
try
98100
{
99101
// If the source is running, there is never a need for any decoupling logic.
@@ -120,7 +122,7 @@ public void ProcessFrame()
120122
if (lastReferenceTime == null)
121123
return;
122124

123-
double elapsedReferenceTime = (realtimeReferenceClock.CurrentTime - lastReferenceTime.Value) * Rate;
125+
double elapsedReferenceTime = (referenceTime - lastReferenceTime.Value) * Rate;
124126

125127
currentTime += elapsedReferenceTime;
126128

@@ -142,7 +144,7 @@ public void ProcessFrame()
142144
finally
143145
{
144146
IsRunning = shouldBeRunning;
145-
lastReferenceTime = realtimeReferenceClock.CurrentTime;
147+
lastReferenceTime = referenceTime;
146148
CurrentTime = currentTime;
147149
ElapsedFrameTime = CurrentTime - lastTime;
148150
}

0 commit comments

Comments
 (0)