don't reset uncapped until new frame (#1455)

* skip DRS

* set `targetrefresh` after FPS limiter
This commit is contained in:
Roman Fomin 2024-02-10 14:26:53 +07:00 committed by GitHub
parent 1da8be9fdb
commit 35f7dd822a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 17 additions and 6 deletions

View File

@ -58,6 +58,7 @@ boolean vga_porch_flash; // emulate VGA "porch" behaviour
boolean smooth_scaling;
boolean resetneeded;
boolean setrefreshneeded;
boolean toggle_fullscreen;
boolean toggle_exclusive_fullscreen;
@ -657,6 +658,7 @@ static void I_DrawDiskIcon(), I_RestoreDiskBackground();
static unsigned int disk_to_draw, disk_to_restore;
static void CreateUpscaledTexture(boolean force);
static void I_ResetTargetRefresh(void);
void I_FinishUpdate(void)
{
@ -746,6 +748,12 @@ void I_FinishUpdate(void)
{
frametime_start = I_GetTimeUS();
}
if (setrefreshneeded)
{
setrefreshneeded = false;
I_ResetTargetRefresh();
}
}
//
@ -1270,8 +1278,10 @@ static void ResetLogicalSize(void)
}
}
void I_ResetTargetRefresh(void)
static void I_ResetTargetRefresh(void)
{
uncapped = default_uncapped;
if (uncapped)
{
// SDL may report native refresh rate as zero.
@ -1283,6 +1293,7 @@ void I_ResetTargetRefresh(void)
}
UpdateLimiter();
drs_skip_frame = true;
}
//

View File

@ -62,7 +62,6 @@ void I_FinishUpdate(void);
void I_ReadScreen(byte* dst);
void I_ResetScreen(void); // killough 10/98
void I_ResetTargetRefresh(void);
void I_ToggleVsync(void); // [JN] Calls native SDL vsync toggle
void I_DynamicResolution(void);
@ -92,6 +91,7 @@ extern int video_display; // display index
extern boolean screenvisible;
extern boolean window_focused;
extern boolean resetneeded;
extern boolean setrefreshneeded;
extern boolean smooth_scaling;
extern boolean toggle_fullscreen;
extern boolean toggle_exclusive_fullscreen;

View File

@ -3940,8 +3940,8 @@ static void M_SetMidiPlayer(void)
static void M_ToggleUncapped(void)
{
DISABLE_ITEM(!uncapped, gen_settings1[gen1_fpslimit]);
I_ResetTargetRefresh();
DISABLE_ITEM(!default_uncapped, gen_settings1[gen1_fpslimit]);
setrefreshneeded = true;
}
static void M_ToggleFullScreen(void)
@ -3958,7 +3958,7 @@ static void M_CoerceFPSLimit(void)
{
if (fpslimit < TICRATE)
fpslimit = 0;
I_ResetTargetRefresh();
setrefreshneeded = true;
}
static void M_UpdateFOV(void)

View File

@ -192,7 +192,7 @@ default_t defaults[] = {
// [FG] uncapped rendering frame rate
{
"uncapped",
(config_t *) &default_uncapped, (config_t *) &uncapped,
(config_t *) &default_uncapped, NULL,
{1}, {0, 1}, number, ss_gen, wad_no,
"1 to enable uncapped rendering frame rate"
},