Browse Source

OpenGL ES fix and proper sizes for the icons

Martin Felis 9 years ago
parent
commit
8244228004

+ 1 - 1
AndroidManifest.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest package="org.love2d.android"
-      android:versionCode="20"
+      android:versionCode="21"
       android:versionName="0.10.1"
       android:installLocation="auto" xmlns:android="http://schemas.android.com/apk/res/android">
     <uses-permission android:name="android.permission.INTERNET"/>

+ 1 - 0
README.md

@@ -47,6 +47,7 @@ specific fixes are:
 * Added a new love.conf flag t.externalstorage, which determines whether files are saved in internal or external storage on Android devices.
 * Fixed audio on Android to pause when the app is inactive, and resume when the app becomes active again.
 * Fixed a driver bug on some Android devices which caused all objects to show up as black.
+* Fixed love.graphics.clear(colortable) causing crashes on OpenGL ES 2 systems when a Canvas is active.
 * New icons
 
 0.10.0:

+ 1 - 0
jni/love/changes.txt

@@ -20,6 +20,7 @@ Released: N/A
   * Fixed RandomGenerator:random crashing if a nil 'self' is used.
   * Fixed loading BMFont files which have characters with 0 width or height (a space character, for example).
   * Fixed love.graphics.newFont causing crashes if FileData is passed in.
+  * Fixed love.graphics.clear(colortable) causing crashes on OpenGL ES 2 systems when a Canvas is active.
   * Fixed a driver bug on some Android devices which caused all objects to show up as black.
   * Fixed a driver bug on Windows with AMD graphics cards where love.graphics.clear would not always work.
   * Fixed Shader:sendColor incorrectly converting alpha values from sRGB to linear RGB when gamma-correct rendering is enabled.

+ 11 - 5
jni/love/src/modules/graphics/opengl/Graphics.cpp

@@ -461,17 +461,23 @@ void Graphics::clear(const std::vector<OptionalColorf> &colors)
 	if (colors.size() == 0)
 		return;
 
-	if (states.back().canvases.size() == 0)
+	size_t numcanvases = states.back().canvases.size();
+
+	if (numcanvases > 0 && colors.size() != numcanvases)
+		throw love::Exception("Number of clear colors must match the number of active canvases (%ld)", states.back().canvases.size());
+
+	// We want to take the single-color codepath if there's no active Canvas, or
+	// if there's only one active Canvas. The multi-color codepath (in the loop
+	// below) assumes MRT functions are available, and also may call more
+	// expensive GL functions which are unnecessary if only one Canvas is active.
+	if (numcanvases <= 1)
 	{
 		if (colors[0].enabled)
-			clear({colors[0].r, colors[0].g, colors[0].b, colors[0].a});
+			clear(colors[0].toColor());
 
 		return;
 	}
 
-	if (colors.size() != states.back().canvases.size())
-		throw love::Exception("Number of clear colors must match the number of active canvases (%ld)", states.back().canvases.size());
-
 	bool drawbuffermodified = false;
 
 	for (int i = 0; i < (int) colors.size(); i++)

+ 2 - 0
jni/love/src/modules/graphics/opengl/Graphics.h

@@ -66,6 +66,8 @@ public:
 	{
 		float r, g, b, a;
 		bool enabled;
+
+		Colorf toColor() const { return Colorf(r, g, b, a); }
 	};
 
 	Graphics();

BIN
love_icon_512x512.png


BIN
res/drawable-hdpi/love.png


BIN
res/drawable-mdpi/love.png


BIN
res/drawable-xhdpi/love.png


BIN
res/drawable-xxhdpi/love.png


BIN
res/drawable-xxxhdpi/love.png