Refactor video driver name retrieval (#11413)

Co-authored-by: hecktest <>
This commit is contained in:
hecks 2021-07-11 09:50:34 +02:00 committed by GitHub
parent 29522017a3
commit 1d25d1f7ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 27 deletions

View File

@ -105,7 +105,7 @@ RenderingEngine::RenderingEngine(IEventReceiver *receiver)
u32 i;
for (i = 0; i != drivers.size(); i++) {
if (!strcasecmp(driverstring.c_str(),
RenderingEngine::getVideoDriverName(drivers[i]))) {
RenderingEngine::getVideoDriverInfo(drivers[i]).name.c_str())) {
driverType = drivers[i];
break;
}
@ -555,28 +555,15 @@ void RenderingEngine::draw_scene(video::SColor skycolor, bool show_hud,
core->draw(skycolor, show_hud, show_minimap, draw_wield_tool, draw_crosshair);
}
const char *RenderingEngine::getVideoDriverName(irr::video::E_DRIVER_TYPE type)
const VideoDriverInfo &RenderingEngine::getVideoDriverInfo(irr::video::E_DRIVER_TYPE type)
{
static const std::unordered_map<irr::video::E_DRIVER_TYPE,const std::string> driver_ids = {
{irr::video::EDT_NULL, "null"},
{irr::video::EDT_OPENGL, "opengl"},
{irr::video::EDT_OGLES1, "ogles1"},
{irr::video::EDT_OGLES2, "ogles2"},
static const std::unordered_map<irr::video::E_DRIVER_TYPE,VideoDriverInfo> driver_info_map = {
{irr::video::EDT_NULL, {"null", "NULL Driver"}},
{irr::video::EDT_OPENGL, {"opengl", "OpenGL"}},
{irr::video::EDT_OGLES1, {"ogles1", "OpenGL ES1"}},
{irr::video::EDT_OGLES2, {"ogles2", "OpenGL ES2"}},
};
return driver_ids.at(type).c_str();
}
const char *RenderingEngine::getVideoDriverFriendlyName(irr::video::E_DRIVER_TYPE type)
{
static const std::unordered_map<irr::video::E_DRIVER_TYPE,const std::string> driver_names = {
{irr::video::EDT_NULL, "NULL Driver"},
{irr::video::EDT_OPENGL, "OpenGL"},
{irr::video::EDT_OGLES1, "OpenGL ES1"},
{irr::video::EDT_OGLES2, "OpenGL ES2"},
};
return driver_names.at(type).c_str();
return driver_info_map.at(type);
}
#ifndef __ANDROID__

View File

@ -29,6 +29,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
// include the shadow mapper classes too
#include "client/shadows/dynamicshadowsrender.h"
struct VideoDriverInfo {
std::string name;
std::string friendly_name;
};
class ITextureSource;
class Camera;
@ -49,8 +53,7 @@ public:
video::IVideoDriver *getVideoDriver() { return driver; }
static const char *getVideoDriverName(irr::video::E_DRIVER_TYPE type);
static const char *getVideoDriverFriendlyName(irr::video::E_DRIVER_TYPE type);
static const VideoDriverInfo &getVideoDriverInfo(irr::video::E_DRIVER_TYPE type);
static float getDisplayDensity();
static v2u32 getDisplaySize();

View File

@ -737,13 +737,12 @@ int ModApiMainMenu::l_get_video_drivers(lua_State *L)
lua_newtable(L);
for (u32 i = 0; i != drivers.size(); i++) {
const char *name = RenderingEngine::getVideoDriverName(drivers[i]);
const char *fname = RenderingEngine::getVideoDriverFriendlyName(drivers[i]);
auto &info = RenderingEngine::getVideoDriverInfo(drivers[i]);
lua_newtable(L);
lua_pushstring(L, name);
lua_pushstring(L, info.name.c_str());
lua_setfield(L, -2, "name");
lua_pushstring(L, fname);
lua_pushstring(L, info.friendly_name.c_str());
lua_setfield(L, -2, "friendly_name");
lua_rawseti(L, -2, i + 1);