Correct modeset timing on some systems

Co-authored-by: Marcus Minhorst <marcus.minhorst@gmail.com>
This commit is contained in:
Chris Robinson 2025-08-31 21:53:58 -04:00 committed by Rachael Alexanderson
commit b8807b7d99
3 changed files with 9 additions and 8 deletions

1
.gitignore vendored
View file

@ -21,6 +21,7 @@ fmodapi*linux/
.vscode
.cache
*.kate-swp
*.geany
# private dev files
*.user

View file

@ -667,6 +667,13 @@ void FStartScreen::Render(bool force)
// Do not refresh too often. This function gets called a lot more frequently than the screen can update.
if (nowtime - screen->FrameTime > minwaittime || force)
{
if (setmodeneeded)
{
setmodeneeded = false;
screen->ToggleFullscreen(vid_fullscreen);
V_OutputResized(screen->GetWidth(), screen->GetHeight());
}
screen->FrameTime = nowtime;
screen->BeginFrame();
twod->ClearClipRect();
@ -694,13 +701,6 @@ void FStartScreen::Render(bool force)
DrawTexture(twod, StartupTexture, 0, 0, DTA_VirtualWidthF, displaywidth, DTA_VirtualHeightF, displayheight, TAG_END);
}
if (setmodeneeded)
{
setmodeneeded = false;
screen->ToggleFullscreen(vid_fullscreen);
V_OutputResized(screen->GetWidth(), screen->GetHeight());
}
twod->End();
screen->Update();
twod->OnFrameDone();

View file

@ -3353,6 +3353,7 @@ static int D_InitGame(const FIWADInfo* iwad_info, std::vector<std::string>& allw
FBaseCVar::EnableCallbacks ();
StartScreen = nostartscreen? nullptr : GetGameStartScreen(per_shader_progress > 0 ? max_progress * 10 / 9 : max_progress + 3);
setmodeneeded = true;
if (StartScreen != nullptr) StartScreen->Render();
// +compatmode cannot be used on the command line, so use this as a substitute
@ -3543,7 +3544,6 @@ static int D_InitGame(const FIWADInfo* iwad_info, std::vector<std::string>& allw
{
return 0;
}
setmodeneeded = true;
}
// [SP] Force vanilla transparency auto-detection to re-detect our game lumps now