From 868a1a5c13a0c086aa1ff3414a1eb12076821c27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C5=99etislav=20=C5=A0tec?= Date: Sun, 2 Aug 2015 18:42:03 +0200 Subject: [PATCH] src/client/tile.cpp: Fix reference counting --- src/client/tile.cpp | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/client/tile.cpp b/src/client/tile.cpp index 03badd817..79ed4a072 100644 --- a/src/client/tile.cpp +++ b/src/client/tile.cpp @@ -1011,7 +1011,7 @@ video::IImage* TextureSource::generateImage(const std::string &name) std::string last_part_of_name = name.substr(last_separator_pos + 1); - /* + /* If this name is enclosed in parentheses, generate it and blit it onto the base image */ @@ -1209,21 +1209,22 @@ bool TextureSource::generateImagePart(std::string part_of_name, s32 frame_count = stoi(sf.next(":")); s32 progression = stoi(sf.next(":")); - /* - Load crack image. + if (progression >= 0) { + /* + Load crack image. - It is an image with a number of cracking stages - horizontally tiled. - */ - video::IImage *img_crack = m_sourcecache.getOrLoad( + It is an image with a number of cracking stages + horizontally tiled. + */ + video::IImage *img_crack = m_sourcecache.getOrLoad( "crack_anylength.png", m_device); - if (img_crack && progression >= 0) - { - draw_crack(img_crack, baseimg, + if (img_crack) { + draw_crack(img_crack, baseimg, use_overlay, frame_count, progression, driver); - img_crack->drop(); + img_crack->drop(); + } } } /* @@ -1612,6 +1613,7 @@ bool TextureSource::generateImagePart(std::string part_of_name, if (img) { apply_mask(img, baseimg, v2s32(0, 0), v2s32(0, 0), img->getDimension()); + img->drop(); } else { errorstream << "generateImage(): Failed to load \"" << filename << "\".";