From ab65923161edd3dab8d2623b3895485ad932a951 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 29 Jul 2016 00:47:21 +0300 Subject: Dont return temp surface in atlasmanager. --- src/resources/atlas/atlasmanager.cpp | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) (limited to 'src/resources/atlas/atlasmanager.cpp') diff --git a/src/resources/atlas/atlasmanager.cpp b/src/resources/atlas/atlasmanager.cpp index bc1bf8224..19ab3b09f 100644 --- a/src/resources/atlas/atlasmanager.cpp +++ b/src/resources/atlas/atlasmanager.cpp @@ -79,23 +79,8 @@ AtlasResource *AtlasManager::loadTextureAtlas(const std::string &name, if (!atlas) continue; - // create atlas base on sorted images - SDL_Surface *const surface = createSDLAtlas(atlas); - - if (!surface) - continue; - - // debug save -// ImageWriter::writePNG(surface, settings.tempDir -// + "/atlas" + name + toString(k) + ".png"); -// k ++; - - // convert SDL images to OpenGL + createSDLAtlas(atlas); convertAtlas(atlas); - - // free SDL atlas surface - MSDL_FreeSurface(surface); - resource->atlases.push_back(atlas); } @@ -281,7 +266,7 @@ void AtlasManager::simpleSort(const std::string &restrict name, BLOCK_END("AtlasManager::simpleSort") } -SDL_Surface *AtlasManager::createSDLAtlas(TextureAtlas *const atlas) +void AtlasManager::createSDLAtlas(TextureAtlas *const atlas) { BLOCK_START("AtlasManager::createSDLAtlas") #if SDL_BYTEORDER == SDL_BIG_ENDIAN @@ -300,7 +285,7 @@ SDL_Surface *AtlasManager::createSDLAtlas(TextureAtlas *const atlas) if (atlas->items.size() == 1) { BLOCK_END("AtlasManager::createSDLAtlas") - return nullptr; + return; } // using only power of two sizes. @@ -316,11 +301,13 @@ SDL_Surface *AtlasManager::createSDLAtlas(TextureAtlas *const atlas) if (!surface) { BLOCK_END("AtlasManager::createSDLAtlas") - return nullptr; + return; } BLOCK_END("AtlasManager::createSDLAtlas create surface") Image *image = imageHelper->loadSurface(surface); + // free SDL atlas surface + MSDL_FreeSurface(surface); // drawing SDL images to surface FOR_EACH (std::vector::iterator, it, atlas->items) @@ -334,7 +321,6 @@ SDL_Surface *AtlasManager::createSDLAtlas(TextureAtlas *const atlas) } atlas->atlasImage = image; BLOCK_END("AtlasManager::createSDLAtlas") - return surface; } void AtlasManager::convertAtlas(TextureAtlas *const atlas) -- cgit v1.2.3-60-g2f50