yuzu_cmd: Make use of fullscreen_mode setting
Reverts 48259de0c1a6a1aca77eec31cb8aca5ca2b680dd to the previous hierarchy and fixes the resolution issue with this fullscreen mode. yuzu-cmd will now read the fullscreen_mode setting and use it appropriately.
This commit is contained in:
		| @@ -446,6 +446,7 @@ void Config::ReadValues() { | ||||
|     ReadSetting("Renderer", Settings::values.renderer_debug); | ||||
|     ReadSetting("Renderer", Settings::values.vulkan_device); | ||||
|  | ||||
|     ReadSetting("Renderer", Settings::values.fullscreen_mode); | ||||
|     ReadSetting("Renderer", Settings::values.aspect_ratio); | ||||
|     ReadSetting("Renderer", Settings::values.max_anisotropy); | ||||
|     ReadSetting("Renderer", Settings::values.use_frame_limit); | ||||
|   | ||||
| @@ -224,6 +224,10 @@ debug = | ||||
| # Which Vulkan physical device to use (defaults to 0) | ||||
| vulkan_device = | ||||
|  | ||||
| # Whether to use fullscreen or borderless window mode | ||||
| # 0 (Windows default): Borderless window, 1 (All other default): Exclusive fullscreen | ||||
| fullscreen_mode = | ||||
|  | ||||
| # Aspect ratio | ||||
| # 0: Default (16:9), 1: Force 4:3, 2: Force 21:9, 3: Stretch to Window | ||||
| aspect_ratio = | ||||
|   | ||||
| @@ -6,6 +6,7 @@ | ||||
|  | ||||
| #include "common/logging/log.h" | ||||
| #include "common/scm_rev.h" | ||||
| #include "common/settings.h" | ||||
| #include "core/core.h" | ||||
| #include "core/perf_stats.h" | ||||
| #include "input_common/keyboard.h" | ||||
| @@ -122,24 +123,37 @@ void EmuWindow_SDL2::OnResize() { | ||||
| } | ||||
|  | ||||
| void EmuWindow_SDL2::Fullscreen() { | ||||
|     // Try a different fullscreening method | ||||
|     LOG_INFO(Frontend, "Attempting to use borderless fullscreen..."); | ||||
|     if (SDL_SetWindowFullscreen(render_window, SDL_WINDOW_FULLSCREEN_DESKTOP) == 0) { | ||||
|         return; | ||||
|     switch (Settings::values.fullscreen_mode.GetValue()) { | ||||
|     case 1: // Exclusive fullscreen | ||||
|         // Set window size to render size before entering fullscreen -- SDL does not resize to | ||||
|         // display dimensions in this mode. | ||||
|         // TODO: Multiply the window size by resolution_factor (for both docked modes) | ||||
|         if (Settings::values.use_docked_mode) { | ||||
|             SDL_SetWindowSize(render_window, Layout::ScreenDocked::Width, | ||||
|                               Layout::ScreenDocked::Height); | ||||
|         } | ||||
|  | ||||
|         if (SDL_SetWindowFullscreen(render_window, SDL_WINDOW_FULLSCREEN) == 0) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         LOG_ERROR(Frontend, "Fullscreening failed: {}", SDL_GetError()); | ||||
|         LOG_INFO(Frontend, "Attempting to use borderless fullscreen..."); | ||||
|         [[fallthrough]]; | ||||
|     case 0: // Borderless window | ||||
|         if (SDL_SetWindowFullscreen(render_window, SDL_WINDOW_FULLSCREEN_DESKTOP) == 0) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         LOG_ERROR(Frontend, "Borderless fullscreening failed: {}", SDL_GetError()); | ||||
|         [[fallthrough]]; | ||||
|     default: | ||||
|         // Fallback algorithm: Maximise window. | ||||
|         // Works on all systems (unless something is seriously wrong), so no fallback for this one. | ||||
|         LOG_INFO(Frontend, "Falling back on a maximised window..."); | ||||
|         SDL_MaximizeWindow(render_window); | ||||
|         break; | ||||
|     } | ||||
|  | ||||
|     LOG_ERROR(Frontend, "Borderless fullscreening failed: {}", SDL_GetError()); | ||||
|  | ||||
|     if (SDL_SetWindowFullscreen(render_window, SDL_WINDOW_FULLSCREEN) == 0) { | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     LOG_ERROR(Frontend, "Fullscreening failed: {}", SDL_GetError()); | ||||
|  | ||||
|     // Fallback algorithm: Maximise window. | ||||
|     // Works on all systems (unless something is seriously wrong), so no fallback for this one. | ||||
|     LOG_INFO(Frontend, "Falling back on a maximised window..."); | ||||
|     SDL_MaximizeWindow(render_window); | ||||
| } | ||||
|  | ||||
| void EmuWindow_SDL2::WaitEvent() { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user