[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r4095 - trunk/pingus/src/engine/display
From: |
grumbel at BerliOS |
Subject: |
[Pingus-CVS] r4095 - trunk/pingus/src/engine/display |
Date: |
Tue, 1 Dec 2009 03:50:45 +0100 |
Author: grumbel
Date: 2009-12-01 03:50:45 +0100 (Tue, 01 Dec 2009)
New Revision: 4095
Modified:
trunk/pingus/src/engine/display/sprite_impl.cpp
Log:
Removed broken caching code, this fixes broken Sprite rotations
Modified: trunk/pingus/src/engine/display/sprite_impl.cpp
===================================================================
--- trunk/pingus/src/engine/display/sprite_impl.cpp 2009-12-01 02:50:09 UTC
(rev 4094)
+++ trunk/pingus/src/engine/display/sprite_impl.cpp 2009-12-01 02:50:45 UTC
(rev 4095)
@@ -22,51 +22,23 @@
#include "engine/display/framebuffer.hpp"
#include "engine/display/sprite_description.hpp"
-typedef std::map<std::string, FramebufferSurface> SurfaceCache;
-SurfaceCache surface_cache;
-
-FramebufferSurface load_framebuffer_surface(const Pathname& filename,
ResourceModifier::Enum mod)
+FramebufferSurface load_framebuffer_surface(const Pathname& filename,
ResourceModifier::Enum modifier)
{
- SurfaceCache::iterator i = surface_cache.find(filename.get_sys_path());
-
- if (i == surface_cache.end())
+ // FIXME: Implement proper cache
+ Surface surface(filename);
+ if (modifier != ResourceModifier::ROT0)
{
-
- Surface surface(filename);
- if (mod != ResourceModifier::ROT0)
- surface = surface.mod(mod);
-
- if (!surface)
- {
- std::cout << "Error: Sprite: couldn't load '" << filename << "'" <<
std::endl;
- surface = Surface(Pathname("images/core/misc/404.png",
Pathname::DATA_PATH));
- if (!surface) assert(!"Surface Couldn't find 404");
- }
-
- FramebufferSurface framebuffer_surface =
Display::get_framebuffer().create_surface(surface);
-
- surface_cache[filename.get_sys_path()] = framebuffer_surface;
-
- return framebuffer_surface;
+ surface = surface.mod(modifier);
}
- else
- {
- //std::cout << "Sharing: " << filename.get_sys_path() << std::endl;
- return i->second;
- }
-}
-void delete_framebuffer_surface(const Pathname& filename)
-{
- SurfaceCache::iterator i = surface_cache.find(filename.get_sys_path());
- if (i != surface_cache.end())
+ if (!surface)
{
- //std::cout << "UseCount for " << filename << ": " <<
i->second.use_count() << std::endl;
- if (i->second.use_count() == 1)
- {
- surface_cache.erase(i);
- }
+ std::cout << "Error: Sprite: couldn't load '" << filename << "'" <<
std::endl;
+ surface = Surface(Pathname("images/core/misc/404.png",
Pathname::DATA_PATH));
+ if (!surface) assert(!"Surface Couldn't find 404");
}
+
+ return Display::get_framebuffer().create_surface(surface);
}
SpriteImpl::SpriteImpl() :
@@ -99,7 +71,7 @@
frame(0),
tick_count(0)
{
- framebuffer_surface = load_framebuffer_surface(filename, mod);
+ framebuffer_surface = load_framebuffer_surface(desc.filename, mod);
frame_pos = desc.frame_pos;
@@ -135,11 +107,6 @@
SpriteImpl::~SpriteImpl()
{
- if (!filename.empty())
- {
- framebuffer_surface = FramebufferSurface();
- delete_framebuffer_surface(filename);
- }
}
void
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r4095 - trunk/pingus/src/engine/display,
grumbel at BerliOS <=