diff --git a/osu.Game/Online/PollingComponent.cs b/osu.Game/Online/PollingComponent.cs
index 806c0047e7..243be8da44 100644
--- a/osu.Game/Online/PollingComponent.cs
+++ b/osu.Game/Online/PollingComponent.cs
@@ -47,39 +47,13 @@ protected override void LoadComplete()
pollIfNecessary();
}
- private bool pollIfNecessary()
+ ///
+ /// Immediately performs a .
+ ///
+ public void PollImmediately()
{
- // we must be loaded so we have access to clock.
- if (!IsLoaded) return false;
-
- // there's already a poll process running.
- if (pollingActive) return false;
-
- // don't try polling if the time between polls hasn't been set.
- if (TimeBetweenPolls.Value == 0) return false;
-
- if (!lastTimePolled.HasValue)
- {
- doPoll();
- return true;
- }
-
- if (Time.Current - lastTimePolled.Value > TimeBetweenPolls.Value)
- {
- doPoll();
- return true;
- }
-
- // not enough time has passed since the last poll. we do want to schedule a poll to happen, though.
+ lastTimePolled = Time.Current - TimeBetweenPolls.Value;
scheduleNextPoll();
- return false;
- }
-
- private void doPoll()
- {
- scheduledPoll = null;
- pollingActive = true;
- Poll().ContinueWith(_ => pollComplete());
}
///
@@ -90,13 +64,11 @@ protected virtual Task Poll()
return Task.CompletedTask;
}
- ///
- /// Immediately performs a .
- ///
- public void PollImmediately()
+ private void doPoll()
{
- lastTimePolled = Time.Current - TimeBetweenPolls.Value;
- scheduleNextPoll();
+ scheduledPoll = null;
+ pollingActive = true;
+ Poll().ContinueWith(_ => pollComplete());
}
///
@@ -111,6 +83,33 @@ private void pollComplete()
pollIfNecessary();
}
+ private void pollIfNecessary()
+ {
+ // we must be loaded so we have access to clock.
+ if (!IsLoaded) return;
+
+ // there's already a poll process running.
+ if (pollingActive) return;
+
+ // don't try polling if the time between polls hasn't been set.
+ if (TimeBetweenPolls.Value == 0) return;
+
+ if (!lastTimePolled.HasValue)
+ {
+ doPoll();
+ return;
+ }
+
+ if (Time.Current - lastTimePolled.Value > TimeBetweenPolls.Value)
+ {
+ doPoll();
+ return;
+ }
+
+ // not enough time has passed since the last poll. we do want to schedule a poll to happen, though.
+ scheduleNextPoll();
+ }
+
private void scheduleNextPoll()
{
scheduledPoll?.Cancel();