diff --git a/src/i_video.c b/src/i_video.c index 5776ae2a..0991bb44 100644 --- a/src/i_video.c +++ b/src/i_video.c @@ -54,7 +54,7 @@ boolean uncapped, default_uncapped; // [FG] uncapped rendering frame rate int fpslimit; // when uncapped, limit framerate to this value boolean fullscreen; boolean exclusive_fullscreen; -int widescreen; // widescreen mode +aspect_ratio_mode_t widescreen, default_widescreen; // widescreen mode boolean vga_porch_flash; // emulate VGA "porch" behaviour boolean smooth_scaling; @@ -975,40 +975,35 @@ static void ResetResolution(int height) { int w, h; - if (height > native_height_adjusted) - { - return; - } - actualheight = use_aspect ? (int)(height * 1.2) : height; video.height = height; - if (widescreen) + switch (widescreen) { - switch(widescreen) - { - case RATIO_16_10: - w = 16; - h = 10; - break; - case RATIO_16_9: - w = 16; - h = 9; - break; - case RATIO_21_9: - w = 21; - h = 9; - break; - default: - w = native_width; - h = native_height; - break; - } - } - else - { - w = 4; - h = 3; + case RATIO_ORIG: + w = 4; + h = 3; + break; + case RATIO_MATCH_SCREEN: + w = native_width; + h = native_height; + break; + case RATIO_16_10: + w = 16; + h = 10; + break; + case RATIO_16_9: + w = 16; + h = 9; + break; + case RATIO_21_9: + w = 21; + h = 9; + break; + default: + w = 16; + h = 9; + break; } double aspect_ratio = (double)w / (double)h; @@ -1432,16 +1427,15 @@ static void CreateSurfaces(void) SDL_TEXTUREACCESS_STREAMING, w, h); - int oldwidescreen = widescreen; widescreen = RATIO_MATCH_SCREEN; ResetResolution(h); R_InitAnyRes(); ST_InitRes(); - widescreen = oldwidescreen; + widescreen = default_widescreen; - if (resolution_mode != RES_DRS) + if (resolution_mode != RES_DRS || widescreen != RATIO_MATCH_SCREEN) { ResetResolution(CurrentResolutionMode()); } @@ -1484,6 +1478,7 @@ static void I_ReinitGraphicsMode(void) void I_ResetScreen(void) { resolution_mode = default_resolution_mode; + widescreen = default_widescreen; ResetResolution(CurrentResolutionMode()); ResetLogicalSize(); diff --git a/src/i_video.h b/src/i_video.h index dcc9345d..0040d34a 100644 --- a/src/i_video.h +++ b/src/i_video.h @@ -24,7 +24,7 @@ #include "doomtype.h" -enum +typedef enum { RATIO_ORIG, RATIO_MATCH_SCREEN, @@ -32,7 +32,7 @@ enum RATIO_16_9, RATIO_21_9, NUM_RATIOS -}; +} aspect_ratio_mode_t; typedef enum { @@ -76,7 +76,7 @@ extern boolean exclusive_fullscreen; extern int fpslimit; // when uncapped, limit framerate to this value extern int fps; extern boolean vga_porch_flash; // emulate VGA "porch" behaviour -extern int widescreen; // widescreen mode +extern aspect_ratio_mode_t widescreen, default_widescreen; // widescreen mode extern int video_display; // display index extern boolean screenvisible; extern boolean window_focused; diff --git a/src/m_misc.c b/src/m_misc.c index 1b922986..d8114609 100644 --- a/src/m_misc.c +++ b/src/m_misc.c @@ -186,7 +186,7 @@ default_t defaults[] = { // widescreen mode { "widescreen", - (config_t *) &widescreen, NULL, + (config_t *) &default_widescreen, NULL, {RATIO_MATCH_SCREEN}, {RATIO_ORIG, NUM_RATIOS-1}, number, ss_none, wad_no, "widescreen mode (0 = disable, 1 = match screen, 2 = 16:10, 3 = 16:9, 4 = 21:9)" },