Round refresh rate instead of truncating
Fixes #1441.
diff --git a/src/cocoa_monitor.m b/src/cocoa_monitor.m
index 955d52d..5767d24 100644
--- a/src/cocoa_monitor.m
+++ b/src/cocoa_monitor.m
@@ -29,6 +29,7 @@
#include <stdlib.h>
#include <limits.h>
+#include <math.h>
#include <IOKit/graphics/IOGraphicsLib.h>
#include <CoreVideo/CVBase.h>
@@ -148,7 +149,7 @@
GLFWvidmode result;
result.width = (int) CGDisplayModeGetWidth(mode);
result.height = (int) CGDisplayModeGetHeight(mode);
- result.refreshRate = (int) CGDisplayModeGetRefreshRate(mode);
+ result.refreshRate = (int) round(CGDisplayModeGetRefreshRate(mode));
if (result.refreshRate == 0)
{
diff --git a/src/wl_monitor.c b/src/wl_monitor.c
index 588f8b0..2b50b51 100644
--- a/src/wl_monitor.c
+++ b/src/wl_monitor.c
@@ -30,6 +30,7 @@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
+#include <math.h>
static void outputHandleGeometry(void* data,
@@ -70,7 +71,7 @@
mode.redBits = 8;
mode.greenBits = 8;
mode.blueBits = 8;
- mode.refreshRate = refresh / 1000;
+ mode.refreshRate = (int) round(refresh / 1000.0);
monitor->modeCount++;
monitor->modes =
diff --git a/src/x11_monitor.c b/src/x11_monitor.c
index df53041..240e9fb 100644
--- a/src/x11_monitor.c
+++ b/src/x11_monitor.c
@@ -30,6 +30,7 @@
#include <limits.h>
#include <stdlib.h>
#include <string.h>
+#include <math.h>
// Check whether the display mode should be included in enumeration
@@ -44,7 +45,7 @@
static int calculateRefreshRate(const XRRModeInfo* mi)
{
if (mi->hTotal && mi->vTotal)
- return (int) ((double) mi->dotClock / ((double) mi->hTotal * (double) mi->vTotal));
+ return (int) round((double) mi->dotClock / ((double) mi->hTotal * (double) mi->vTotal));
else
return 0;
}