diff --git a/osu.Game/Screens/OnlinePlay/Multiplayer/Spectate/MultiSpectatorScreen.cs b/osu.Game/Screens/OnlinePlay/Multiplayer/Spectate/MultiSpectatorScreen.cs
index 523301f4fd..2d03276fe5 100644
--- a/osu.Game/Screens/OnlinePlay/Multiplayer/Spectate/MultiSpectatorScreen.cs
+++ b/osu.Game/Screens/OnlinePlay/Multiplayer/Spectate/MultiSpectatorScreen.cs
@@ -197,7 +197,8 @@ namespace osu.Game.Screens.OnlinePlay.Multiplayer.Spectate
.DefaultIfEmpty(0)
.Min();
- masterClockContainer.Reset(true, startTime);
+ masterClockContainer.StartTime = startTime;
+ masterClockContainer.Reset(true);
// Although the clock has been started, this flag is set to allow for later synchronisation state changes to also be able to start it.
canStartMasterClock = true;
diff --git a/osu.Game/Screens/Play/GameplayClockContainer.cs b/osu.Game/Screens/Play/GameplayClockContainer.cs
index f2df00d691..721abc66f8 100644
--- a/osu.Game/Screens/Play/GameplayClockContainer.cs
+++ b/osu.Game/Screens/Play/GameplayClockContainer.cs
@@ -48,7 +48,7 @@ namespace osu.Game.Screens.Play
/// If not set, a value of zero will be used.
/// Importantly, the value will be inferred from the current ruleset in unless specified.
///
- protected double? StartTime { get; set; }
+ public double? StartTime { get; set; }
///
/// Creates a new .
@@ -116,12 +116,8 @@ namespace osu.Game.Screens.Play
/// Resets this and the source to an initial state ready for gameplay.
///
/// Whether to start the clock immediately, if not already started.
- /// A time to use for future calls as the definite start of gameplay.
- public void Reset(bool startClock = false, double? gameplayStartTime = null)
+ public void Reset(bool startClock = false)
{
- if (gameplayStartTime != null)
- StartTime = gameplayStartTime;
-
// Manually stop the source in order to not affect the IsPaused state.
AdjustableSource.Stop();
diff --git a/osu.Game/Screens/Play/MasterGameplayClockContainer.cs b/osu.Game/Screens/Play/MasterGameplayClockContainer.cs
index 54901746fc..88dc6db0f7 100644
--- a/osu.Game/Screens/Play/MasterGameplayClockContainer.cs
+++ b/osu.Game/Screens/Play/MasterGameplayClockContainer.cs
@@ -100,9 +100,9 @@ namespace osu.Game.Screens.Play
bool isStarted = !IsPaused.Value;
// If a custom start time was not specified, calculate the best value to use.
- double gameplayStartTime = StartTime ?? findEarliestStartTime();
+ StartTime ??= findEarliestStartTime();
- Reset(startClock: isStarted, gameplayStartTime: gameplayStartTime);
+ Reset(startClock: isStarted);
}
private double findEarliestStartTime()
diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs
index be19565657..f99b07c313 100644
--- a/osu.Game/Screens/Play/Player.cs
+++ b/osu.Game/Screens/Play/Player.cs
@@ -621,7 +621,8 @@ namespace osu.Game.Screens.Play
bool wasFrameStable = DrawableRuleset.FrameStablePlayback;
DrawableRuleset.FrameStablePlayback = false;
- GameplayClockContainer.Reset(gameplayStartTime: time);
+ GameplayClockContainer.StartTime = time;
+ GameplayClockContainer.Reset();
// Delay resetting frame-stable playback for one frame to give the FrameStabilityContainer a chance to seek.
frameStablePlaybackResetDelegate = ScheduleAfterChildren(() => DrawableRuleset.FrameStablePlayback = wasFrameStable);