From a7e4d8359b9584e6ab8c3617cb4f4e87c34a9565 Mon Sep 17 00:00:00 2001 From: radius <andres.430@gmail.com> Date: Tue, 11 Dec 2018 19:34:12 -0500 Subject: [PATCH] fix fullscreen=>windowed when remember window positions is on --- command.c | 5 +++++ gfx/common/win32_common.c | 7 ++----- retroarch.c | 16 ++++++++++++++++ retroarch.h | 6 ++++++ 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/command.c b/command.c index dcc37f7575..0f0ad1969d 100644 --- a/command.c +++ b/command.c @@ -2745,9 +2745,12 @@ TODO: Add a setting for these tweaks */ settings_t *settings = config_get_ptr(); bool new_fullscreen_state = !settings->bools.video_fullscreen && !retroarch_is_forced_fullscreen(); + if (!video_driver_has_windowed()) return false; + retroarch_set_switching_display_mode(); + /* we toggled manually, write the new value to settings */ configuration_set_bool(settings, settings->bools.video_fullscreen, new_fullscreen_state); @@ -2763,6 +2766,8 @@ TODO: Add a setting for these tweaks */ video_driver_hide_mouse(); else video_driver_show_mouse(); + + retroarch_unset_switching_display_mode(); } break; case CMD_EVENT_COMMAND_DEINIT: diff --git a/gfx/common/win32_common.c b/gfx/common/win32_common.c index a9d96062e0..79f3dd6b9e 100644 --- a/gfx/common/win32_common.c +++ b/gfx/common/win32_common.c @@ -657,7 +657,7 @@ static void win32_save_position(void) } if (settings && settings->bools.video_window_save_positions) { - if (!settings->bools.video_fullscreen && !retroarch_is_forced_fullscreen()) + if (!settings->bools.video_fullscreen && !retroarch_is_forced_fullscreen() && !retroarch_is_switching_display_mode()) { settings->uints.window_position_x = g_win32_pos_x; settings->uints.window_position_y = g_win32_pos_y; @@ -684,7 +684,6 @@ static LRESULT CALLBACK WndProcCommon(bool *quit, HWND hwnd, UINT message, *quit = true; break; } - win32_save_position(); break; case WM_DROPFILES: { @@ -724,10 +723,9 @@ static LRESULT CALLBACK WndProcCommon(bool *quit, HWND hwnd, UINT message, g_win32_resized = true; } } - win32_save_position(); *quit = true; break; - case WM_COMMAND: + case WM_COMMAND: { settings_t *settings = config_get_ptr(); if (settings && settings->bools.ui_menubar_enable) @@ -970,7 +968,6 @@ bool win32_window_create(void *data, unsigned style, #ifndef _XBOX unsigned user_width = width; unsigned user_height = height; - win32_set_position_from_config(); if (settings->bools.video_window_save_positions && !fullscreen) diff --git a/retroarch.c b/retroarch.c index ba30250af1..49d35b45bb 100644 --- a/retroarch.c +++ b/retroarch.c @@ -210,6 +210,7 @@ static bool rarch_is_inited = false; static bool rarch_error_on_init = false; static bool rarch_block_config_read = false; static bool rarch_force_fullscreen = false; +static bool rarch_is_switching_display_mode = false; static bool has_set_verbosity = false; static bool has_set_libretro = false; static bool has_set_libretro_directory = false; @@ -2025,6 +2026,21 @@ void retroarch_unset_forced_fullscreen(void) rarch_force_fullscreen = false; } +bool retroarch_is_switching_display_mode(void) +{ + return rarch_is_switching_display_mode; +} + +void retroarch_set_switching_display_mode(void) +{ + rarch_is_switching_display_mode = true; +} + +void retroarch_unset_switching_display_mode(void) +{ + rarch_is_switching_display_mode = false; +} + /* set a runtime shader preset without overwriting the settings value */ void retroarch_set_shader_preset(const char* preset) { diff --git a/retroarch.h b/retroarch.h index a3667fde88..50f481ea6c 100644 --- a/retroarch.h +++ b/retroarch.h @@ -330,6 +330,12 @@ void retroarch_unset_shader_preset(void); char* retroarch_get_shader_preset(void); +bool retroarch_is_switching_display_mode(void); + +void retroarch_set_switching_display_mode(void); + +void retroarch_unset_switching_display_mode(void); + /** * retroarch_fail: * @error_code : Error code.