Skip to content
Permalink
Browse files
Refactor video driver name retrieval (#11413)
Co-authored-by: hecktest <>
  • Loading branch information
hecktest committed Jul 11, 2021
1 parent 2952201 commit 1d25d1f7ad35f739e8a64c2bdb44105998aed19b
Showing with 16 additions and 27 deletions.
  1. +8 −21 src/client/renderingengine.cpp
  2. +5 −2 src/client/renderingengine.h
  3. +3 −4 src/script/lua_api/l_mainmenu.cpp
@@ -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__
@@ -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 @@ class RenderingEngine

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();

@@ -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);

0 comments on commit 1d25d1f

Please sign in to comment.