add borderless windows, deprecate fullscreen mode

This commit is contained in:
cody glassman 2022-05-03 22:50:31 -07:00
parent 45161d91c9
commit 05901a2480
13 changed files with 163 additions and 89 deletions

View file

@ -1,6 +1,7 @@
#include "sdlvideowrapper.hpp"
#include <components/debug/debuglog.hpp>
#include <components/settings/settings.hpp>
#include <osgViewer/Viewer>
@ -68,21 +69,21 @@ namespace SDLUtil
Log(Debug::Warning) << "Couldn't set gamma: " << SDL_GetError();
}
void VideoWrapper::setVideoMode(int width, int height, bool fullscreen, bool windowBorder)
void VideoWrapper::setVideoMode(int width, int height, Settings::WindowMode windowMode, bool windowBorder)
{
SDL_SetWindowFullscreen(mWindow, 0);
if (SDL_GetWindowFlags(mWindow) & SDL_WINDOW_MAXIMIZED)
SDL_RestoreWindow(mWindow);
if (fullscreen)
if (windowMode == Settings::WindowMode::Fullscreen || windowMode == Settings::WindowMode::BorderlessFullscreen)
{
SDL_DisplayMode mode;
SDL_GetWindowDisplayMode(mWindow, &mode);
mode.w = width;
mode.h = height;
SDL_SetWindowDisplayMode(mWindow, &mode);
SDL_SetWindowFullscreen(mWindow, fullscreen);
SDL_SetWindowFullscreen(mWindow, windowMode == Settings::WindowMode::Fullscreen ? SDL_WINDOW_FULLSCREEN : SDL_WINDOW_FULLSCREEN_DESKTOP);
}
else
{

View file

@ -12,6 +12,11 @@ namespace osgViewer
class Viewer;
}
namespace Settings
{
enum class WindowMode;
}
namespace SDLUtil
{
@ -25,7 +30,7 @@ namespace SDLUtil
void setGammaContrast(float gamma, float contrast);
void setVideoMode(int width, int height, bool fullscreen, bool windowBorder);
void setVideoMode(int width, int height, Settings::WindowMode windowMode, bool windowBorder);
void centerWindow();