mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-24 10:40:46 +00:00
Add support for changing the refresh rate in SDL builds. Should also fix non-SDL builds.
git-svn-id: https://svn.eduke32.com/eduke32@5621 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
463b90bcd3
commit
66e6bbff0d
7 changed files with 34 additions and 6 deletions
|
@ -9,6 +9,8 @@
|
|||
#include "compat.h"
|
||||
#include "baselayer.h"
|
||||
|
||||
extern int32_t maxrefreshfreq;
|
||||
|
||||
#ifdef _WIN32
|
||||
HWND win_gethwnd(void);
|
||||
HINSTANCE win_gethinstance(void);
|
||||
|
|
|
@ -12,6 +12,7 @@ extern uint32_t maxrefreshfreq;
|
|||
extern int32_t glusecds;
|
||||
|
||||
extern char di_disabled;
|
||||
extern char forcegl;
|
||||
|
||||
HWND win_gethwnd(void);
|
||||
HINSTANCE win_gethinstance(void);
|
||||
|
|
|
@ -101,6 +101,7 @@ extern int32_t curbrightness, gammabrightness;
|
|||
char nogl=0;
|
||||
static int32_t vsync_render=0;
|
||||
#endif
|
||||
int32_t maxrefreshfreq=0;
|
||||
|
||||
// last gamma, contrast, brightness
|
||||
static float lastvidgcb[3];
|
||||
|
@ -1113,7 +1114,8 @@ void getvalidmodes(void)
|
|||
for (i = 0; i < SDL_GetNumDisplayModes(0); i++)
|
||||
{
|
||||
SDL_GetDisplayMode(0, i, &dispmode);
|
||||
if ((dispmode.w > MAXXDIM) || (dispmode.h > MAXYDIM))
|
||||
if ((dispmode.w > MAXXDIM) || (dispmode.h > MAXYDIM) ||
|
||||
(maxrefreshfreq && (dispmode.refresh_rate > maxrefreshfreq)))
|
||||
continue;
|
||||
|
||||
// HACK: 8-bit == Software, 32-bit == OpenGL
|
||||
|
@ -1436,6 +1438,23 @@ void setvideomode_sdlcommonpost(int32_t x, int32_t y, int32_t c, int32_t fs, int
|
|||
}
|
||||
|
||||
#if SDL_MAJOR_VERSION!=1
|
||||
void setrefreshrate(void)
|
||||
{
|
||||
SDL_DisplayMode dispmode;
|
||||
SDL_GetCurrentDisplayMode(0, &dispmode);
|
||||
|
||||
dispmode.refresh_rate = maxrefreshfreq;
|
||||
|
||||
SDL_DisplayMode newmode;
|
||||
SDL_GetClosestDisplayMode(0, &dispmode, &newmode);
|
||||
|
||||
if (dispmode.refresh_rate != newmode.refresh_rate)
|
||||
{
|
||||
initprintf("Refresh rate: %dHz\n", newmode.refresh_rate);
|
||||
SDL_SetWindowDisplayMode(sdl_window, &newmode);
|
||||
}
|
||||
}
|
||||
|
||||
int32_t setvideomode(int32_t x, int32_t y, int32_t c, int32_t fs)
|
||||
{
|
||||
int32_t regrab = 0, ret;
|
||||
|
@ -1505,6 +1524,8 @@ int32_t setvideomode(int32_t x, int32_t y, int32_t c, int32_t fs)
|
|||
|
||||
SDL_GL_SetSwapInterval(vsync_render);
|
||||
|
||||
setrefreshrate();
|
||||
|
||||
#ifdef _WIN32
|
||||
loadglextensions();
|
||||
#endif
|
||||
|
@ -1520,6 +1541,8 @@ int32_t setvideomode(int32_t x, int32_t y, int32_t c, int32_t fs)
|
|||
if (!sdl_window)
|
||||
SDL2_VIDEO_ERR("SDL_CreateWindow");
|
||||
|
||||
setrefreshrate();
|
||||
|
||||
sdl_renderer = SDL_CreateRenderer(sdl_window, -1, 0);
|
||||
if (!sdl_renderer)
|
||||
SDL2_VIDEO_FALLBACK("SDL_CreateRenderer")
|
||||
|
|
|
@ -23,6 +23,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "duke3d.h"
|
||||
#include "demo.h"
|
||||
#include "screens.h"
|
||||
#include "renderlayer.h"
|
||||
|
||||
#ifdef LUNATIC
|
||||
char const * const * g_argv;
|
||||
|
|
|
@ -23,6 +23,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "duke3d.h"
|
||||
#include "scriplib.h"
|
||||
#include "osdcmds.h"
|
||||
#include "renderlayer.h"
|
||||
|
||||
#ifdef __ANDROID__
|
||||
#include "android.h"
|
||||
|
@ -607,9 +608,7 @@ int32_t CONFIG_ReadSetup(void)
|
|||
windowy = -1;
|
||||
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "WindowPosY", (int32_t *)&windowy);
|
||||
|
||||
#ifdef RENDERTYPEWIN
|
||||
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "MaxRefreshFreq", (int32_t *)&maxrefreshfreq);
|
||||
#endif
|
||||
|
||||
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "ScreenBPP", &ud.config.ScreenBPP);
|
||||
if (ud.config.ScreenBPP < 8) ud.config.ScreenBPP = 32;
|
||||
|
@ -734,9 +733,7 @@ void CONFIG_WriteSetup(uint32_t flags)
|
|||
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "WindowPositioning", windowpos, FALSE, FALSE);
|
||||
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "WindowPosX", windowx, FALSE, FALSE);
|
||||
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "WindowPosY", windowy, FALSE, FALSE);
|
||||
#ifdef RENDERTYPEWIN
|
||||
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "MaxRefreshFreq", maxrefreshfreq, FALSE, FALSE);
|
||||
#endif
|
||||
|
||||
if (!NAM_WW2GI)
|
||||
{
|
||||
|
|
|
@ -604,6 +604,10 @@ static void G_DrawOverheadMap(int32_t cposx, int32_t cposy, int32_t czoom, int16
|
|||
printext256(20, y+=9, COLOR_WHITE, -1, tempbuf, 0); \
|
||||
} while (0)
|
||||
|
||||
#ifdef DEBUGGINGAIDS
|
||||
sprstat_t g_spriteStat;
|
||||
#endif
|
||||
|
||||
static void G_PrintCoords(int32_t snum)
|
||||
{
|
||||
const int32_t x = 250;
|
||||
|
|
|
@ -37,7 +37,7 @@ typedef struct {
|
|||
int32_t numonscreen;
|
||||
} sprstat_t;
|
||||
|
||||
sprstat_t g_spriteStat;
|
||||
extern sprstat_t g_spriteStat;
|
||||
#endif
|
||||
|
||||
extern int32_t dr_yxaspect, dr_viewingrange;
|
||||
|
|
Loading…
Reference in a new issue