Refactor SDL device to use the same abstraction as other devices

In particular this makes the OpenGL procedure stuff work.
fixes https://github.com/minetest/minetest/issues/12265
This commit is contained in:
sfan5
2022-05-21 15:19:57 +02:00
parent 0732807cc8
commit 593103a261
6 changed files with 121 additions and 74 deletions

View File

@ -0,0 +1,56 @@
// Copyright (C) 2022 sfan5
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in Irrlicht.h
#include "CSDLManager.h"
#if defined(_IRR_COMPILE_WITH_SDL_DEVICE_) && defined(_IRR_COMPILE_WITH_OPENGL_)
#include "CIrrDeviceSDL.h"
#include "COpenGLCommon.h"
namespace irr
{
namespace video
{
CSDLManager::CSDLManager(CIrrDeviceSDL* device) : IContextManager(), SDLDevice(device)
{
#ifdef _DEBUG
setDebugName("CSDLManager");
#endif
}
bool CSDLManager::initialize(const SIrrlichtCreationParameters& params, const SExposedVideoData& data)
{
Data = data;
return true;
}
const SExposedVideoData& CSDLManager::getContext() const
{
return Data;
}
bool CSDLManager::activateContext(const SExposedVideoData& videoData, bool restorePrimaryOnZero)
{
// unclear if this is still needed:
glFrontFace(GL_CW);
return true;
}
void* CSDLManager::getProcAddress(const std::string &procName)
{
return SDL_GL_GetProcAddress(procName.c_str());
}
bool CSDLManager::swapBuffers()
{
SDLDevice->SwapWindow();
return true;
}
}
}
#endif