1. Bart van Strien
  2. love-experiments

Commits

Alex Szpakowski  committed 585b998

Hopefully fixed issue #898, and cleaned up code for love.graphics.getRendererInfo.

  • Participants
  • Parent commits 888ca23
  • Branches default

Comments (0)

Files changed (8)

File src/modules/graphics/Graphics.cpp

View file
  • Ignore whitespace
 	return support.find(in, out);
 }
 
-bool Graphics::getConstant(const char *in, RendererInfo &out)
-{
-	return rendererInfo.find(in, out);
-}
-
-bool Graphics::getConstant(RendererInfo in, const char *&out)
-{
-	return rendererInfo.find(in, out);
-}
-
 bool Graphics::getConstant(const char *in, SystemLimit &out)
 {
 	return systemLimits.find(in, out);
 
 StringMap<Graphics::Support, Graphics::SUPPORT_MAX_ENUM> Graphics::support(Graphics::supportEntries, sizeof(Graphics::supportEntries));
 
-StringMap<Graphics::RendererInfo, Graphics::RENDERER_INFO_MAX_ENUM>::Entry Graphics::rendererInfoEntries[] =
-{
-	{ "name", Graphics::RENDERER_INFO_NAME },
-	{ "version", Graphics::RENDERER_INFO_VERSION },
-	{ "vendor", Graphics::RENDERER_INFO_VENDOR },
-	{ "device", Graphics::RENDERER_INFO_DEVICE },
-};
-
-StringMap<Graphics::RendererInfo, Graphics::RENDERER_INFO_MAX_ENUM> Graphics::rendererInfo(Graphics::rendererInfoEntries, sizeof(Graphics::rendererInfoEntries));
-
 StringMap<Graphics::SystemLimit, Graphics::LIMIT_MAX_ENUM>::Entry Graphics::systemLimitEntries[] =
 {
 	{"pointsize", Graphics::LIMIT_POINT_SIZE},

File src/modules/graphics/Graphics.h

View file
  • Ignore whitespace
 #include "common/Module.h"
 #include "common/StringMap.h"
 
+// C++
+#include <string>
+
 namespace love
 {
 namespace graphics
 		SUPPORT_MAX_ENUM
 	};
 
-	enum RendererInfo
-	{
-		RENDERER_INFO_NAME,
-		RENDERER_INFO_VERSION,
-		RENDERER_INFO_VENDOR,
-		RENDERER_INFO_DEVICE,
-		RENDERER_INFO_MAX_ENUM
-	};
-
 	enum SystemLimit
 	{
 		LIMIT_POINT_SIZE,
 		LIMIT_MAX_ENUM
 	};
 
+	struct RendererInfo
+	{
+		std::string name;
+		std::string version;
+		std::string vendor;
+		std::string device;
+	};
+
 	virtual ~Graphics();
 
 	/**
 	static bool getConstant(const char *in, Support &out);
 	static bool getConstant(Support in, const char  *&out);
 
-	static bool getConstant(const char *in, RendererInfo &out);
-	static bool getConstant(RendererInfo in, const char *&out);
-
 	static bool getConstant(const char *in, SystemLimit &out);
 	static bool getConstant(SystemLimit in, const char *&out);
 
 	static StringMap<Support, SUPPORT_MAX_ENUM>::Entry supportEntries[];
 	static StringMap<Support, SUPPORT_MAX_ENUM> support;
 
-	static StringMap<RendererInfo, RENDERER_INFO_MAX_ENUM>::Entry rendererInfoEntries[];
-	static StringMap<RendererInfo, RENDERER_INFO_MAX_ENUM> rendererInfo;
-
 	static StringMap<SystemLimit, LIMIT_MAX_ENUM>::Entry systemLimitEntries[];
 	static StringMap<SystemLimit, LIMIT_MAX_ENUM> systemLimits;
 

File src/modules/graphics/opengl/Graphics.cpp

View file
  • Ignore whitespace
 	return img;
 }
 
-std::string Graphics::getRendererInfo(Graphics::RendererInfo infotype) const
+Graphics::RendererInfo Graphics::getRendererInfo() const
 {
-	const char *infostr = 0;
+	RendererInfo info;
+	info.name = "OpenGL";
 
-	switch (infotype)
-	{
-	case Graphics::RENDERER_INFO_NAME:
-	default:
-		infostr = "OpenGL";
-		break;
-	case Graphics::RENDERER_INFO_VERSION:
-		infostr = (const char *) glGetString(GL_VERSION);
-		break;
-	case Graphics::RENDERER_INFO_VENDOR:
-		infostr = (const char *) glGetString(GL_VENDOR);
-		break;
-	case Graphics::RENDERER_INFO_DEVICE:
-		infostr = (const char *) glGetString(GL_RENDERER);
-		break;
-	}
+	const char *str = (const char *) glGetString(GL_VERSION);
+	if (str)
+		info.version = str;
+	else
+		throw love::Exception("Cannot retrieve renderer version information.");
 
-	if (!infostr)
-		throw love::Exception("Cannot retrieve renderer information.");
+	str = (const char *) glGetString(GL_VENDOR);
+	if (str)
+		info.vendor = str;
+	else
+		throw love::Exception("Cannot retrieve renderer vendor information.");
 
-	return std::string(infostr);
+	str = (const char *) glGetString(GL_RENDERER);
+	if (str)
+		info.device = str;
+	else
+		throw love::Exception("Cannot retrieve renderer device information.");
+
+	return info;
 }
 
 double Graphics::getSystemLimit(SystemLimit limittype) const

File src/modules/graphics/opengl/Graphics.h

View file
  • Ignore whitespace
 	love::image::ImageData *newScreenshot(love::image::Image *image, bool copyAlpha = true);
 
 	/**
-	 * Returns a string containing system-dependent renderer information.
-	 * Returned string can vary greatly between systems! Do not rely on it for
+	 * Returns system-dependent renderer information.
+	 * Returned string s can vary greatly between systems! Do not rely on it for
 	 * anything!
-	 * @param infotype The type of information to return.
 	 **/
-	std::string getRendererInfo(Graphics::RendererInfo infotype) const;
+	RendererInfo getRendererInfo() const;
 
 	/**
 	 * Gets the system-dependent numeric limit for the specified parameter.

File src/modules/graphics/opengl/VertexBuffer.cpp

View file
  • Ignore whitespace
 #include "VertexBuffer.h"
 
 #include "common/Exception.h"
-#include "common/config.h"
 
 #include <cstdlib>
 #include <cstring>

File src/modules/graphics/opengl/VertexBuffer.h

View file
  • Ignore whitespace
 #define LOVE_GRAPHICS_OPENGL_VERTEX_BUFFER_H
 
 // LOVE
+#include "common/config.h"
 #include "graphics/Volatile.h"
 
 // OpenGL

File src/modules/graphics/opengl/wrap_Canvas.cpp

View file
  • Ignore whitespace
 	{ "clear", w_Canvas_clear },
 	{ "getFormat", w_Canvas_getFormat },
 	{ "getMSAA", w_Canvas_getMSAA },
-	{ "getFSAA", w_Canvas_getMSAA }, // For backward-compatibility. TODO: remove!
 
 	// Deprecated since 0.9.1.
 	{ "getType", w_Canvas_getFormat },
+
+	// Deprecated since 0.9.2.
+	{ "getFSAA", w_Canvas_getMSAA },
+
 	{ 0, 0 }
 };
 

File src/modules/graphics/opengl/wrap_Graphics.cpp

View file
  • Ignore whitespace
 
 int w_getRendererInfo(lua_State *L)
 {
-	std::string name, version, vendor, device;
+	Graphics::RendererInfo info;
+	luax_catchexcept(L, [&](){ info = instance->getRendererInfo(); });
 
-	luax_catchexcept(L, [&]() {
-		name = instance->getRendererInfo(Graphics::RENDERER_INFO_NAME);
-		version = instance->getRendererInfo(Graphics::RENDERER_INFO_VERSION);
-		vendor = instance->getRendererInfo(Graphics::RENDERER_INFO_VENDOR);
-		device = instance->getRendererInfo(Graphics::RENDERER_INFO_DEVICE);
-	});
-
-	luax_pushstring(L, name);
-	luax_pushstring(L, version);
-	luax_pushstring(L, vendor);
-	luax_pushstring(L, device);
-
+	luax_pushstring(L, info.name);
+	luax_pushstring(L, info.version);
+	luax_pushstring(L, info.vendor);
+	luax_pushstring(L, info.device);
 	return 4;
 }