Properly save replay even when the game crashes (fixes #5610)

This commit is contained in:
Pavlos Touboulidis
2014-06-24 22:40:20 +03:00
parent 66325f4941
commit e19dae8eec

View File

@@ -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();