Silently fallback to sorfware rendering

If accelerated rendered cannot be created by SDL, fallback to software rendering. The config option is not changed.
This commit is contained in:
Paweł Bylica 2017-02-24 00:18:11 +01:00
parent 660373cf38
commit 7360d06592
No known key found for this signature in database
GPG Key ID: 7A0C037434FE77EF
1 changed files with 8 additions and 9 deletions

View File

@ -185,7 +185,6 @@ class SoftwareDrawingEngine final : public IDrawingEngine
private:
bool _hardwareDisplay;
SDL_Window * _window = nullptr;
SDL_Surface * _surface = nullptr;
SDL_Surface * _RGBASurface = nullptr;
SDL_Palette * _palette = nullptr;
@ -244,7 +243,11 @@ public:
void Initialise(SDL_Window * window) override
{
_window = window;
if (_hardwareDisplay)
{
// Try to create the accelerated renderer.
_sdlRenderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
}
}
void Resize(uint32 width, uint32 height) override
@ -254,15 +257,11 @@ public:
SDL_FreePalette(_palette);
SDL_DestroyTexture(_screenTexture);
SDL_FreeFormat(_screenTextureFormat);
SDL_DestroyRenderer(_sdlRenderer);
if (_hardwareDisplay)
if (_sdlRenderer != nullptr)
{
_sdlRenderer = SDL_CreateRenderer(_window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
SDL_RendererInfo rendererInfo;
SDL_GetRendererInfo(_sdlRenderer, &rendererInfo);
uint32 pixelFormat = SDL_PIXELFORMAT_UNKNOWN;
for (uint32 i = 0; i < rendererInfo.num_texture_formats; i++)
{
@ -310,7 +309,7 @@ public:
void SetPalette(SDL_Color * palette) override
{
if (_hardwareDisplay)
if (_sdlRenderer != nullptr)
{
if (_screenTextureFormat != nullptr)
{
@ -416,7 +415,7 @@ public:
rct2_draw(&_bitsDPI);
}
if (_hardwareDisplay)
if (_sdlRenderer != nullptr)
{
DisplayViaTexture();
}