From 138c4e50dfde8999cda98bd0238ade58647a3285 Mon Sep 17 00:00:00 2001 From: James Ross-Gowan Date: Thu, 19 Mar 2015 22:49:29 +1100 Subject: w32_common: use the current monitor's refresh rate --- video/out/w32_common.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'video/out/w32_common.c') diff --git a/video/out/w32_common.c b/video/out/w32_common.c index b208666e0c..f70da4fd6e 100644 --- a/video/out/w32_common.c +++ b/video/out/w32_common.c @@ -565,12 +565,15 @@ static void wakeup_gui_thread(void *ctx) PostMessage(w32->window, WM_USER, 0, 0); } -static double vo_w32_get_display_fps(void) +static double vo_w32_get_display_fps(struct vo_w32_state *w32) { - DEVMODE dm; - dm.dmSize = sizeof(DEVMODE); - dm.dmDriverExtra = 0; - if (!EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm)) + // Get the device name of the monitor containing the window + HMONITOR mon = MonitorFromWindow(w32->window, MONITOR_DEFAULTTOPRIMARY); + MONITORINFOEXW mi = { .cbSize = sizeof mi }; + GetMonitorInfoW(mon, (MONITORINFO*)&mi); + + DEVMODE dm = { .dmSize = sizeof dm }; + if (!EnumDisplaySettingsW(mi.szDevice, ENUM_CURRENT_SETTINGS, &dm)) return -1; // May return 0 or 1 which "represent the display hardware's default refresh rate" @@ -595,11 +598,9 @@ static double vo_w32_get_display_fps(void) return rv; } -static void update_display_fps(void *ctx) +static void update_display_fps(struct vo_w32_state *w32) { - struct vo_w32_state *w32 = ctx; - - double fps = vo_w32_get_display_fps(); + double fps = vo_w32_get_display_fps(w32); if (fps != w32->display_fps) { w32->display_fps = fps; signal_events(w32, VO_EVENT_WIN_STATE); -- cgit v1.2.3