From 371453623b3d1b85206c459b22e5b3d3e75452b2 Mon Sep 17 00:00:00 2001 From: sonninnos Date: Tue, 9 Feb 2021 15:33:49 +0200 Subject: [PATCH] Screen Resolution option fixes --- gfx/drivers_context/w_vk_ctx.c | 4 ++++ menu/cbs/menu_cbs_ok.c | 2 +- retroarch.c | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gfx/drivers_context/w_vk_ctx.c b/gfx/drivers_context/w_vk_ctx.c index 670f86b2c0..523eb4a3ce 100644 --- a/gfx/drivers_context/w_vk_ctx.c +++ b/gfx/drivers_context/w_vk_ctx.c @@ -249,6 +249,10 @@ static bool gfx_ctx_w_vk_set_video_mode(void *data, RARCH_ERR("[WGL]: win32_set_video_mode failed.\n"); goto error; } + else + /* This is required for fullscreen mailbox + * not to crash after refresh rate change */ + vulkan_create_swapchain(&win32_vk, width, height, win32_vk_interval); gfx_ctx_w_vk_swap_interval(data, win32_vk_interval); return true; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index e99cfff689..853c739efe 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -6036,7 +6036,7 @@ int action_cb_push_dropdown_item_resolution(const char *path, settings->uints.video_fullscreen_x = width; settings->uints.video_fullscreen_y = height; - return 1; + return action_cancel_pop_default(NULL, NULL, 0, 0); } return 0; diff --git a/retroarch.c b/retroarch.c index df6440de14..d6e33b565a 100644 --- a/retroarch.c +++ b/retroarch.c @@ -30469,6 +30469,11 @@ void video_monitor_set_refresh_rate(float hz) configuration_set_float(settings, settings->floats.video_refresh_rate, hz); + + /* Without CMD_EVENT_REINIT vulkan will not switch rate properly, + * and with other drivers it prevents switching properly.. */ + if (string_is_equal(settings->arrays.video_driver, "vulkan")) + command_event(CMD_EVENT_REINIT, NULL); } /**