mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
Add refresh rate polling to Win32 >= Windows 7.
This commit is contained in:
parent
20d87347f7
commit
e049605359
@ -281,6 +281,45 @@ void win32_monitor_get_info(void)
|
||||
win32_change_display_settings(current_mon.szDevice, NULL, 0);
|
||||
}
|
||||
|
||||
float win32_get_refresh_rate(void *data)
|
||||
{
|
||||
float refresh_rate = 0.0f;
|
||||
#if _WIN32_WINNT >= 0x0601 || _WIN32_WINDOWS >= 0x0601 /* Win 7 */
|
||||
unsigned int NumPathArrayElements;
|
||||
unsigned int NumModeInfoArrayElements;
|
||||
DISPLAYCONFIG_PATH_INFO *PathInfoArray;
|
||||
DISPLAYCONFIG_MODE_INFO *ModeInfoArray;
|
||||
DISPLAYCONFIG_TOPOLOGY_ID TopologyID;
|
||||
int result;
|
||||
|
||||
GetDisplayConfigBufferSizes(QDC_DATABASE_CURRENT,
|
||||
&NumPathArrayElements,
|
||||
&NumModeInfoArrayElements);
|
||||
|
||||
PathInfoArray = (DISPLAYCONFIG_PATH_INFO *)
|
||||
malloc(sizeof (DISPLAYCONFIG_PATH_INFO) * NumPathArrayElements);
|
||||
ModeInfoArray = (DISPLAYCONFIG_MODE_INFO *)
|
||||
malloc(sizeof (DISPLAYCONFIG_MODE_INFO) * NumModeInfoArrayElements);
|
||||
|
||||
result = QueryDisplayConfig(QDC_DATABASE_CURRENT,
|
||||
&NumPathArrayElements,
|
||||
PathInfoArray,
|
||||
&NumModeInfoArrayElements,
|
||||
ModeInfoArray,
|
||||
&TopologyID);
|
||||
if (result == ERROR_SUCCESS && NumPathArrayElements >= 1)
|
||||
{
|
||||
refresh_rate = (float) PathInfoArray[0].targetInfo.refreshRate.Numerator /
|
||||
PathInfoArray[0].targetInfo.refreshRate.Denominator;
|
||||
}
|
||||
|
||||
free(ModeInfoArray);
|
||||
free(PathInfoArray);
|
||||
|
||||
#endif
|
||||
return refresh_rate;
|
||||
}
|
||||
|
||||
void win32_monitor_info(void *data, void *hm_data, unsigned *mon_id)
|
||||
{
|
||||
unsigned i;
|
||||
|
@ -128,6 +128,8 @@ bool win32_taskbar_is_created(void);
|
||||
|
||||
void win32_set_taskbar_created(bool created);
|
||||
|
||||
float win32_get_refresh_rate(void *data);
|
||||
|
||||
#if defined(HAVE_D3D8) || defined(HAVE_D3D9) || defined (HAVE_D3D10) || defined (HAVE_D3D11) || defined (HAVE_D3D12)
|
||||
LRESULT CALLBACK WndProcD3D(HWND hwnd, UINT message,
|
||||
WPARAM wparam, LPARAM lparam);
|
||||
|
@ -557,7 +557,7 @@ static const video_poke_interface_t d3d10_poke_interface = {
|
||||
NULL, /* load_texture */
|
||||
NULL, /* unload_texture */
|
||||
NULL, /* set_video_mode */
|
||||
NULL, /* get_refresh_rate */
|
||||
win32_get_refresh_rate,
|
||||
d3d10_set_filtering,
|
||||
NULL, /* get_video_output_size */
|
||||
NULL, /* get_video_output_prev */
|
||||
|
@ -1589,7 +1589,7 @@ static const video_poke_interface_t d3d11_poke_interface = {
|
||||
d3d11_gfx_load_texture,
|
||||
d3d11_gfx_unload_texture,
|
||||
NULL, /* set_video_mode */
|
||||
NULL, /* get_refresh_rate */
|
||||
win32_get_refresh_rate,
|
||||
d3d11_set_filtering,
|
||||
NULL, /* get_video_output_size */
|
||||
NULL, /* get_video_output_prev */
|
||||
|
@ -1752,7 +1752,7 @@ static const video_poke_interface_t d3d12_poke_interface = {
|
||||
d3d12_gfx_load_texture,
|
||||
d3d12_gfx_unload_texture,
|
||||
NULL, /* set_video_mode */
|
||||
NULL, /* get_refresh_rate */
|
||||
win32_get_refresh_rate,
|
||||
d3d12_set_filtering,
|
||||
NULL, /* get_video_output_size */
|
||||
NULL, /* get_video_output_prev */
|
||||
|
@ -1866,7 +1866,7 @@ static const video_poke_interface_t d3d_poke_interface = {
|
||||
d3d8_load_texture,
|
||||
d3d8_unload_texture,
|
||||
d3d8_set_video_mode,
|
||||
NULL,
|
||||
win32_get_refresh_rate,
|
||||
NULL,
|
||||
NULL, /* get_video_output_size */
|
||||
NULL, /* get_video_output_prev */
|
||||
|
@ -1890,7 +1890,7 @@ static const video_poke_interface_t d3d9_poke_interface = {
|
||||
d3d9_load_texture,
|
||||
d3d9_unload_texture,
|
||||
d3d9_set_video_mode,
|
||||
NULL,
|
||||
win32_get_refresh_rate,
|
||||
NULL,
|
||||
NULL, /* get_video_output_size */
|
||||
NULL, /* get_video_output_prev */
|
||||
|
@ -538,7 +538,7 @@ static const video_poke_interface_t gdi_poke_interface = {
|
||||
NULL,
|
||||
NULL,
|
||||
gdi_set_video_mode,
|
||||
NULL, /* get_refresh_rate */
|
||||
win32_get_refresh_rate,
|
||||
NULL,
|
||||
gdi_get_video_output_size,
|
||||
gdi_get_video_output_prev,
|
||||
|
@ -760,7 +760,7 @@ const gfx_ctx_driver_t gfx_ctx_wgl = {
|
||||
gfx_ctx_wgl_swap_interval,
|
||||
gfx_ctx_wgl_set_video_mode,
|
||||
gfx_ctx_wgl_get_video_size,
|
||||
NULL, /* get_refresh_rate */
|
||||
win32_get_refresh_rate,
|
||||
gfx_ctx_wgl_get_video_output_size,
|
||||
gfx_ctx_wgl_get_video_output_prev,
|
||||
gfx_ctx_wgl_get_video_output_next,
|
||||
|
@ -1159,7 +1159,7 @@ static void
|
||||
setting_get_string_representation_st_float_video_refresh_rate_polled(
|
||||
void *data, char *s, size_t len)
|
||||
{
|
||||
snprintf(s, len, "%.5f Hz", video_driver_get_refresh_rate());
|
||||
snprintf(s, len, "%.3f Hz", video_driver_get_refresh_rate());
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
x
Reference in New Issue
Block a user