summaryrefslogtreecommitdiff
path: root/src/video/cocoa/cocoa_v.mm
diff options
context:
space:
mode:
authorsean <43609023+spnda@users.noreply.github.com>2021-03-09 10:22:52 +0100
committerGitHub <noreply@github.com>2021-03-09 10:22:52 +0100
commit0464a50ab8f5f6c7028da80cb0d579cdfc84717a (patch)
tree2bacc79fb89d9140f7edcca56a5cf82a943f3524 /src/video/cocoa/cocoa_v.mm
parent64a8c38d2f08de5aee6315e5746cbe5ec73da9e3 (diff)
downloadopenttd-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.mm25
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