2018-04-13 17:19:50 +08:00
|
|
|
|
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
|
|
|
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
|
|
|
|
|
|
|
|
|
using System;
|
|
|
|
|
using System.Runtime;
|
|
|
|
|
using osu.Framework.Allocation;
|
|
|
|
|
using osu.Framework.Configuration;
|
|
|
|
|
using osu.Framework.Graphics;
|
|
|
|
|
|
|
|
|
|
namespace osu.Game.Overlays.Settings.Sections.Debug
|
|
|
|
|
{
|
|
|
|
|
public class GCSettings : SettingsSubsection
|
|
|
|
|
{
|
|
|
|
|
protected override string Header => "Garbage Collector";
|
|
|
|
|
|
2018-08-22 11:02:14 +08:00
|
|
|
|
private readonly Bindable<LatencyMode> latencyMode = new Bindable<LatencyMode>();
|
|
|
|
|
private Bindable<GCLatencyMode> configLatencyMode;
|
|
|
|
|
|
2018-04-13 17:19:50 +08:00
|
|
|
|
[BackgroundDependencyLoader]
|
|
|
|
|
private void load(FrameworkDebugConfigManager config)
|
|
|
|
|
{
|
|
|
|
|
Children = new Drawable[]
|
|
|
|
|
{
|
2018-08-22 11:02:14 +08:00
|
|
|
|
new SettingsEnumDropdown<LatencyMode>
|
2018-04-13 17:19:50 +08:00
|
|
|
|
{
|
|
|
|
|
LabelText = "Active mode",
|
2018-08-22 11:02:14 +08:00
|
|
|
|
Bindable = latencyMode
|
2018-04-13 17:19:50 +08:00
|
|
|
|
},
|
|
|
|
|
new SettingsButton
|
|
|
|
|
{
|
|
|
|
|
Text = "Force garbage collection",
|
|
|
|
|
Action = GC.Collect
|
|
|
|
|
},
|
|
|
|
|
};
|
2018-08-22 11:02:14 +08:00
|
|
|
|
|
|
|
|
|
configLatencyMode = config.GetBindable<GCLatencyMode>(DebugSetting.ActiveGCMode);
|
|
|
|
|
configLatencyMode.BindValueChanged(v => latencyMode.Value = (LatencyMode)v, true);
|
|
|
|
|
latencyMode.BindValueChanged(v => configLatencyMode.Value = (GCLatencyMode)v);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private enum LatencyMode
|
|
|
|
|
{
|
|
|
|
|
Batch = GCLatencyMode.Batch,
|
|
|
|
|
Interactive = GCLatencyMode.Interactive,
|
|
|
|
|
LowLatency = GCLatencyMode.LowLatency,
|
|
|
|
|
SustainedLowLatency = GCLatencyMode.SustainedLowLatency
|
2018-04-13 17:19:50 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|