diff options
author | sean <43609023+spnda@users.noreply.github.com> | 2021-03-09 10:22:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-09 10:22:52 +0100 |
commit | 0464a50ab8f5f6c7028da80cb0d579cdfc84717a (patch) | |
tree | 2bacc79fb89d9140f7edcca56a5cf82a943f3524 /src/video/cocoa/cocoa_v.mm | |
parent | 64a8c38d2f08de5aee6315e5746cbe5ec73da9e3 (diff) | |
download | openttd-0464a50ab8f5f6c7028da80cb0d579cdfc84717a.tar.xz |
Add: Display refresh rate game option (#8813)
Diffstat (limited to 'src/video/cocoa/cocoa_v.mm')
-rw-r--r-- | src/video/cocoa/cocoa_v.mm | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm index 8d1fd4447..9fb74cd04 100644 --- a/src/video/cocoa/cocoa_v.mm +++ b/src/video/cocoa/cocoa_v.mm @@ -43,6 +43,7 @@ #import <sys/param.h> /* for MAXPATHLEN */ #import <sys/time.h> /* gettimeofday */ +#include <array> /** * Important notice regarding all modifications!!!!!!! @@ -229,6 +230,30 @@ void VideoDriver_Cocoa::EditBoxLostFocus() } /** + * Get refresh rates of all connected monitors. + */ +std::vector<int> VideoDriver_Cocoa::GetListOfMonitorRefreshRates() +{ + std::vector<int> rates{}; + + if (MacOSVersionIsAtLeast(10, 6, 0)) { + std::array<CGDirectDisplayID, 16> displays; + + uint32_t count = 0; + CGGetActiveDisplayList(displays.size(), displays.data(), &count); + + for (uint32_t i = 0; i < count; i++) { + CGDisplayModeRef mode = CGDisplayCopyDisplayMode(displays[i]); + int rate = (int)CGDisplayModeGetRefreshRate(mode); + if (rate > 0) rates.push_back(rate); + CGDisplayModeRelease(mode); + } + } + + return rates; +} + +/** * Get the resolution of the main screen. */ Dimension VideoDriver_Cocoa::GetScreenSize() const |