Octo's patch from bug 523.
[supertux.git] / src / video / texture_manager.cpp
index a7c32e4..83313f3 100644 (file)
 #include <SDL_image.h>
 #include <assert.h>
 #include <iostream>
+#include <sstream>
+#include <stdexcept>
 
 #include "math/rect.hpp"
 #include "physfs/physfs_sdl.hpp"
 #include "util/file_system.hpp"
 #include "util/log.hpp"
-#include "video/gl/gl_texture.hpp"
 #include "video/sdl_surface_ptr.hpp"
+#include "video/texture.hpp"
 #include "video/video_systems.hpp"
 
+#ifdef HAVE_OPENGL
+#include "video/gl/gl_texture.hpp"
+#endif
+
 TextureManager::TextureManager() :
   image_textures()
 #ifdef HAVE_OPENGL
@@ -61,7 +67,7 @@ TextureManager::get(const std::string& _filename)
 
   if(!texture) {
     texture = create_image_texture(filename);
-    image_textures[filename] = texture;
+    image_textures[texture->get_filename()] = texture;
   }
 
   return texture;
@@ -105,6 +111,7 @@ TextureManager::create_image_texture(const std::string& filename, const Rect& re
   {
     log_warning << "Couldn't load texture '" << filename << "' (now using dummy texture): " << err.what() << std::endl;
     TexturePtr texture = create_dummy_texture();
+    texture->set_filename(filename);
     return texture;
   }
 }
@@ -161,6 +168,7 @@ TextureManager::create_image_texture(const std::string& filename)
   {
     log_warning << "Couldn't load texture '" << filename << "' (now using dummy texture): " << err.what() << std::endl;
     TexturePtr texture = create_dummy_texture();
+    texture->set_filename(filename);
     return texture;
   }
 }