2022-12-19 22:47:10 +01:00
|
|
|
using PowerControl.Helpers;
|
|
|
|
|
using PowerControl.Helpers.AMD;
|
|
|
|
|
|
|
|
|
|
namespace PowerControl.Options
|
|
|
|
|
{
|
|
|
|
|
public static class RefreshRate
|
|
|
|
|
{
|
|
|
|
|
public static Menu.MenuItemWithOptions Instance = new Menu.MenuItemWithOptions()
|
|
|
|
|
{
|
|
|
|
|
Name = "Refresh Rate",
|
2022-12-20 22:52:56 +01:00
|
|
|
PersistentKey = "RefreshRate",
|
2022-12-19 22:47:10 +01:00
|
|
|
ApplyDelay = 1000,
|
2022-12-19 23:36:22 +01:00
|
|
|
ResetValue = () => { return DisplayResolutionController.GetRefreshRates().Max().ToString(); },
|
2022-12-19 22:47:10 +01:00
|
|
|
OptionsValues = delegate ()
|
|
|
|
|
{
|
2023-02-08 23:41:08 +01:00
|
|
|
return new string[] { "30", "35", "40", "45", "48", "50", "55", "60" };
|
|
|
|
|
|
2022-12-19 22:47:10 +01:00
|
|
|
var refreshRates = DisplayResolutionController.GetRefreshRates();
|
|
|
|
|
if (refreshRates.Count() > 1)
|
2022-12-19 23:36:22 +01:00
|
|
|
return refreshRates.Select(item => item.ToString()).ToArray();
|
2022-12-19 22:47:10 +01:00
|
|
|
return null;
|
|
|
|
|
},
|
|
|
|
|
CurrentValue = delegate ()
|
|
|
|
|
{
|
2022-12-19 23:36:22 +01:00
|
|
|
return DisplayResolutionController.GetRefreshRate().ToString();
|
2022-12-19 22:47:10 +01:00
|
|
|
},
|
2022-12-19 23:36:22 +01:00
|
|
|
ApplyValue = (selected) =>
|
2022-12-19 22:47:10 +01:00
|
|
|
{
|
2023-02-08 23:41:08 +01:00
|
|
|
var selectedRefreshRate = int.Parse(selected);
|
|
|
|
|
|
|
|
|
|
if (ExternalHelpers.DisplayConfig.IsInternalConnected == true)
|
|
|
|
|
{
|
|
|
|
|
var currentResolution = DisplayResolutionController.GetResolution();
|
|
|
|
|
if (currentResolution == null)
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
ModeTiming.AddAndSetTiming(new Helpers.AMD.ADLDisplayModeX2()
|
|
|
|
|
{
|
|
|
|
|
PelsWidth = currentResolution.Value.Width,
|
|
|
|
|
PelsHeight = currentResolution.Value.Height,
|
|
|
|
|
RefreshRate = selectedRefreshRate,
|
|
|
|
|
TimingStandard = Helpers.AMD.ADL.ADL_DL_MODETIMING_STANDARD_CVT,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
DisplayResolutionController.SetRefreshRate(selectedRefreshRate);
|
|
|
|
|
}
|
2023-01-05 23:35:31 +01:00
|
|
|
|
2022-12-20 22:52:56 +01:00
|
|
|
return DisplayResolutionController.GetRefreshRate().ToString();
|
|
|
|
|
},
|
2023-01-10 11:12:31 +01:00
|
|
|
Impacts =
|
|
|
|
|
{
|
|
|
|
|
FPSLimit.Instance
|
2022-12-19 22:47:10 +01:00
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|