Fixed Image:setMipmapFilter keeping bad state around if it errors.

This commit is contained in:
Alex Szpakowski
2014-12-05 12:19:50 -04:00
parent 5fac441a51
commit c4a1457603
+12
View File
@@ -256,6 +256,7 @@ void Image::checkMipmapsCreated()
void Image::setFilter(const Texture::Filter &f) void Image::setFilter(const Texture::Filter &f)
{ {
const Filter oldfilter = filter;
filter = f; filter = f;
// We don't want filtering or (attempted) mipmaps on the default texture. // We don't want filtering or (attempted) mipmaps on the default texture.
@@ -267,8 +268,19 @@ void Image::setFilter(const Texture::Filter &f)
bind(); bind();
gl.setTextureFilter(filter); gl.setTextureFilter(filter);
try
{
checkMipmapsCreated(); checkMipmapsCreated();
} }
catch (love::Exception &)
{
// Don't keep the new mipmap filter if we can't create mipmaps.
filter = oldfilter;
gl.setTextureFilter(filter);
throw;
}
}
void Image::setWrap(const Texture::Wrap &w) void Image::setWrap(const Texture::Wrap &w)
{ {