From 8d896d54f78342cf9dab5d697b5a93182d65cf09 Mon Sep 17 00:00:00 2001 From: Juliano Leal Goncalves Date: Wed, 2 Sep 2020 17:45:39 -0300 Subject: [PATCH] Softcode VSYNC setting. Enabled by default. (#783) --- SourceX/display.cpp | 10 +++++++++- SourceX/display.h | 1 + SourceX/dx.cpp | 5 +++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/SourceX/display.cpp b/SourceX/display.cpp index 075258269..5083a3032 100644 --- a/SourceX/display.cpp +++ b/SourceX/display.cpp @@ -116,7 +116,15 @@ bool SpawnWindow(const char *lpWindowName, int nWidth, int nHeight) #ifdef USE_SDL1 SDL_Log("upscaling not supported with USE_SDL1"); #else - renderer = SDL_CreateRenderer(ghMainWnd, -1, SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_ACCELERATED); + Uint32 rendererFlags = SDL_RENDERER_ACCELERATED; + + vsyncEnabled = 1; + DvlIntSetting("vsync", &vsyncEnabled); + if (vsyncEnabled) { + rendererFlags |= SDL_RENDERER_PRESENTVSYNC; + } + + renderer = SDL_CreateRenderer(ghMainWnd, -1, rendererFlags); if (renderer == NULL) { ErrSdl(); } diff --git a/SourceX/display.h b/SourceX/display.h index f51346c55..b5ca3fa9f 100644 --- a/SourceX/display.h +++ b/SourceX/display.h @@ -8,6 +8,7 @@ namespace dvl { +extern int vsyncEnabled; extern int refreshDelay; // Screen refresh rate in nanoseconds extern SDL_Window *window; extern SDL_Renderer *renderer; diff --git a/SourceX/dx.cpp b/SourceX/dx.cpp index 994f684f5..5c5cf0943 100644 --- a/SourceX/dx.cpp +++ b/SourceX/dx.cpp @@ -17,6 +17,7 @@ int locktbl[256]; #endif static CCritSect sgMemCrit; +int vsyncEnabled; int refreshDelay; SDL_Renderer *renderer; SDL_Texture *texture; @@ -280,6 +281,10 @@ void RenderPresent() ErrSdl(); } SDL_RenderPresent(renderer); + + if (!vsyncEnabled) { + LimitFrameRate(); + } } else { if (SDL_UpdateWindowSurface(ghMainWnd) <= -1) { ErrSdl();