Browse Source

Merged default into minor

--HG--
branch : minor
Alex Szpakowski 11 years ago
parent
commit
56653fa946

BIN
extra/windows/love.rc


+ 2 - 2
platform/macosx/Info-Framework.plist

@@ -17,11 +17,11 @@
 	<key>CFBundlePackageType</key>
 	<string>FMWK</string>
 	<key>CFBundleShortVersionString</key>
-	<string>0.9.1</string>
+	<string>0.9.2</string>
 	<key>CFBundleSignature</key>
 	<string>LoVe</string>
 	<key>CFBundleVersion</key>
-	<string>0.9.1</string>
+	<string>0.9.2</string>
 	<key>NSPrincipalClass</key>
 	<string></string>
 </dict>

+ 1 - 1
platform/macosx/love-Info.plist

@@ -46,7 +46,7 @@
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>0.9.1</string>
+	<string>0.9.2</string>
 	<key>CFBundleSignature</key>
 	<string>LoVe</string>
 	<key>LSApplicationCategoryType</key>

+ 1 - 1
platform/unix/love.desktop.in

@@ -2,7 +2,7 @@
 Name=LÖVE
 Comment=The unquestionably awesome 2D game engine
 MimeType=application/x-love-game;
-Exec=@bindir@/love
+Exec=@bindir@/love %f
 Type=Application
 Categories=Development;Game;
 Terminal=false

+ 3 - 3
src/common/version.h

@@ -27,9 +27,9 @@ namespace love
 // Version stuff.
 const int VERSION_MAJOR = 0;
 const int VERSION_MINOR = 9;
-const int VERSION_REV = 1;
-const char *VERSION = "0.9.1";
-const char *VERSION_COMPATIBILITY[] =  { VERSION, "0.9.0", 0 };
+const int VERSION_REV = 2;
+const char *VERSION = "0.9.2";
+const char *VERSION_COMPATIBILITY[] =  { VERSION, "0.9.1", "0.9.0", 0 };
 const char *VERSION_CODENAME = "Baby Inspector";
 
 } // love

+ 0 - 20
src/modules/graphics/Graphics.cpp

@@ -89,16 +89,6 @@ bool Graphics::getConstant(Support in, const char  *&out)
 	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);
@@ -169,16 +159,6 @@ StringMap<Graphics::Support, Graphics::SUPPORT_MAX_ENUM>::Entry Graphics::suppor
 
 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},

+ 11 - 15
src/modules/graphics/Graphics.h

@@ -25,6 +25,9 @@
 #include "common/Module.h"
 #include "common/StringMap.h"
 
+// C++
+#include <string>
+
 namespace love
 {
 namespace graphics
@@ -88,15 +91,6 @@ public:
 		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,
@@ -106,6 +100,14 @@ public:
 		LIMIT_MAX_ENUM
 	};
 
+	struct RendererInfo
+	{
+		std::string name;
+		std::string version;
+		std::string vendor;
+		std::string device;
+	};
+
 	virtual ~Graphics();
 
 	/**
@@ -144,9 +146,6 @@ public:
 	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);
 
@@ -170,9 +169,6 @@ private:
 	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;
 

+ 20 - 21
src/modules/graphics/opengl/Graphics.cpp

@@ -1051,31 +1051,30 @@ love::image::ImageData *Graphics::newScreenshot(love::image::Image *image, bool
 	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.");
+
+	str = (const char *) glGetString(GL_RENDERER);
+	if (str)
+		info.device = str;
+	else
+		throw love::Exception("Cannot retrieve renderer device information.");
 
-	return std::string(infostr);
+	return info;
 }
 
 double Graphics::getSystemLimit(SystemLimit limittype) const

+ 3 - 4
src/modules/graphics/opengl/Graphics.h

@@ -431,12 +431,11 @@ public:
 	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.

+ 3 - 0
src/modules/graphics/opengl/Mesh.cpp

@@ -79,6 +79,9 @@ Mesh::Mesh(int vertexcount, Mesh::DrawMode mode)
 
 Mesh::~Mesh()
 {
+	if (texture)
+		texture->release();
+
 	delete vbo;
 	delete ibo;
 }

+ 2 - 2
src/modules/graphics/opengl/SpriteBatch.cpp

@@ -46,8 +46,8 @@ SpriteBatch::SpriteBatch(Texture *texture, int size, int usage)
 	, size(size)
 	, next(0)
 	, color(0)
-	, array_buf(0)
-	, element_buf(0)
+	, array_buf(nullptr)
+	, element_buf(nullptr)
 	, buffer_used_offset(0)
 	, buffer_used_size(0)
 {

+ 2 - 8
src/modules/graphics/opengl/VertexBuffer.cpp

@@ -21,18 +21,12 @@
 #include "VertexBuffer.h"
 
 #include "common/Exception.h"
-#include "common/config.h"
 
 #include <cstdlib>
 #include <cstring>
 #include <algorithm>
 #include <limits>
 
-// Conflicts with std::numeric_limits<GLushort>::max() (Windows).
-#ifdef max
-# undef max
-#endif
-
 namespace love
 {
 namespace graphics
@@ -55,7 +49,7 @@ VertexBuffer::VertexBuffer(size_t size, GLenum target, GLenum usage, MemoryBacki
 	, usage(usage)
 	, backing(backing)
 	, vbo(0)
-	, memory_map(0)
+	, memory_map(nullptr)
 	, is_dirty(true)
 {
 	if (getMemoryBacking() == BACKING_FULL)
@@ -207,7 +201,7 @@ bool VertexBuffer::load(bool restore)
 	VertexBuffer::Bind bind(*this);
 
 	// Copy the old buffer only if 'restore' was requested.
-	const GLvoid *src = restore ? memory_map : 0;
+	const GLvoid *src = restore ? memory_map : nullptr;
 
 	while (GL_NO_ERROR != glGetError())
 		/* clear error messages */;

+ 1 - 0
src/modules/graphics/opengl/VertexBuffer.h

@@ -23,6 +23,7 @@
 #define LOVE_GRAPHICS_OPENGL_VERTEX_BUFFER_H
 
 // LOVE
+#include "common/config.h"
 #include "graphics/Volatile.h"
 
 // OpenGL

+ 6 - 13
src/modules/graphics/opengl/wrap_Graphics.cpp

@@ -1018,20 +1018,13 @@ int w_hasCanvasFormat(lua_State *L)
 
 int w_getRendererInfo(lua_State *L)
 {
-	std::string name, version, vendor, device;
-
-	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);
+	Graphics::RendererInfo info;
+	luax_catchexcept(L, [&](){ info = instance->getRendererInfo(); });
 
+	luax_pushstring(L, info.name);
+	luax_pushstring(L, info.version);
+	luax_pushstring(L, info.vendor);
+	luax_pushstring(L, info.device);
 	return 4;
 }
 

+ 2 - 2
src/modules/physics/box2d/World.cpp

@@ -131,6 +131,8 @@ bool World::ContactFilter::process(Fixture *a, Fixture *b)
 
 	if (ref != 0)
 	{
+		a->retain();
+		b->retain();
 		lua_State *L = ref->getL();
 		ref->push();
 		luax_pushtype(L, "Fixture", PHYSICS_FIXTURE_T, a);
@@ -318,11 +320,9 @@ bool World::ShouldCollide(b2Fixture *fixtureA, b2Fixture *fixtureB)
 	Fixture *a = (Fixture *)Memoizer::find(fixtureA);
 	if (!a)
 		throw love::Exception("A fixture has escaped Memoizer!");
-	a->retain();
 	Fixture *b = (Fixture *)Memoizer::find(fixtureB);
 	if (!b)
 		throw love::Exception("A fixture has escaped Memoizer!");
-	b->retain();
 	return filter.process(a, b);
 }