// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; using System.Runtime; using osu.Framework.Allocation; using osu.Framework.Bindables; 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"; private readonly Bindable latencyMode = new Bindable(); private Bindable configLatencyMode; [BackgroundDependencyLoader] private void load(FrameworkDebugConfigManager config) { Children = new Drawable[] { new SettingsEnumDropdown { LabelText = "Active mode", Bindable = latencyMode }, new SettingsButton { Text = "Force garbage collection", Action = GC.Collect }, }; configLatencyMode = config.GetBindable(DebugSetting.ActiveGCMode); configLatencyMode.BindValueChanged(e => latencyMode.Value = (LatencyMode)e.NewValue, true); latencyMode.BindValueChanged(e => configLatencyMode.Value = (GCLatencyMode)e.NewValue); } private enum LatencyMode { Batch = GCLatencyMode.Batch, Interactive = GCLatencyMode.Interactive, LowLatency = GCLatencyMode.LowLatency, SustainedLowLatency = GCLatencyMode.SustainedLowLatency } } }