Properly save replay even when the game crashes (fixes #5610)
This commit is contained in:
@@ -483,25 +483,30 @@ namespace OpenRA
|
|||||||
|
|
||||||
SetIdealFrameTime(Settings.Graphics.MaxFramerate);
|
SetIdealFrameTime(Settings.Graphics.MaxFramerate);
|
||||||
|
|
||||||
while (state == RunStatus.Running)
|
try
|
||||||
{
|
{
|
||||||
if (Settings.Graphics.CapFramerate)
|
while (state == RunStatus.Running)
|
||||||
{
|
{
|
||||||
var sw = Stopwatch.StartNew();
|
if (Settings.Graphics.CapFramerate)
|
||||||
|
{
|
||||||
|
var sw = Stopwatch.StartNew();
|
||||||
|
|
||||||
Tick(orderManager);
|
Tick(orderManager);
|
||||||
|
|
||||||
var waitTime = Math.Min(idealFrameTime - sw.Elapsed.TotalSeconds, 1);
|
var waitTime = Math.Min(idealFrameTime - sw.Elapsed.TotalSeconds, 1);
|
||||||
if (waitTime > 0)
|
if (waitTime > 0)
|
||||||
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(waitTime));
|
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(waitTime));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Tick(orderManager);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
Tick(orderManager);
|
|
||||||
}
|
}
|
||||||
|
finally
|
||||||
// Ensure that the active replay is properly saved
|
{
|
||||||
if (orderManager != null)
|
// Ensure that the active replay is properly saved
|
||||||
orderManager.Dispose();
|
if (orderManager != null)
|
||||||
|
orderManager.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
Renderer.Device.Dispose();
|
Renderer.Device.Dispose();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user