summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaarten Vanraes <maarten.vanraes@gmail.com>2011-05-26 22:22:10 +0200
committerMaarten Vanraes <maarten.vanraes@gmail.com>2011-05-26 22:22:10 +0200
commit98b4c6c5b5eb7c60919108c130d534938aed853e (patch)
treee79828f1c10311314402544414a81d55f6177b9c
parent2115769d94e29479e404fdf08c553e755250dce1 (diff)
parentaeef06d5d58dcc6f9339bf6ef5a87e06a4827b17 (diff)
downloadmv-98b4c6c5b5eb7c60919108c130d534938aed853e.tar.gz
mv-98b4c6c5b5eb7c60919108c130d534938aed853e.tar.bz2
mv-98b4c6c5b5eb7c60919108c130d534938aed853e.tar.xz
mv-98b4c6c5b5eb7c60919108c130d534938aed853e.zip
Merge branch 'master' of git://gitorious.org/manaplus/manaplus
-rw-r--r--src/debug/debug_new.cpp2
-rw-r--r--src/gui/gui.cpp2
-rw-r--r--src/particleemitter.cpp10
-rw-r--r--src/particleemitter.h3
-rw-r--r--src/resources/resourcemanager.cpp10
5 files changed, 25 insertions, 2 deletions
diff --git a/src/debug/debug_new.cpp b/src/debug/debug_new.cpp
index de0154a94..3545af60a 100644
--- a/src/debug/debug_new.cpp
+++ b/src/debug/debug_new.cpp
@@ -112,7 +112,7 @@
* value makes the size of new_ptr_list_t 64 on 32-bit platforms.
*/
#ifndef _DEBUG_NEW_FILENAME_LEN
-#define _DEBUG_NEW_FILENAME_LEN 44
+#define _DEBUG_NEW_FILENAME_LEN 100
#endif
/**
diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp
index 9df692515..a23da8157 100644
--- a/src/gui/gui.cpp
+++ b/src/gui/gui.cpp
@@ -264,6 +264,8 @@ void Gui::setUseCustomCursor(bool customCursor)
SDL_ShowCursor(SDL_DISABLE);
// Load the mouse cursor
+ if (mMouseCursors)
+ mMouseCursors->decRef();
mMouseCursors = Theme::getImageSetFromTheme("mouse.png", 40, 40);
if (!mMouseCursors)
diff --git a/src/particleemitter.cpp b/src/particleemitter.cpp
index 33c2f1d92..5f107abb7 100644
--- a/src/particleemitter.cpp
+++ b/src/particleemitter.cpp
@@ -210,6 +210,7 @@ ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target,
logger->log1("Error: no valid imageset");
continue;
}
+ mTempSets.push_back(imageset);
// Get animation frames
for_each_xml_child_node(frameNode, propertyNode)
@@ -293,6 +294,7 @@ ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target,
logger->log1("Error: no valid imageset");
continue;
}
+ mTempSets.push_back(imageset);
// Get animation frames
for_each_xml_child_node(frameNode, propertyNode)
@@ -437,6 +439,14 @@ ParticleEmitter & ParticleEmitter::operator=(const ParticleEmitter &o)
ParticleEmitter::~ParticleEmitter()
{
+ for (std::list<ImageSet*>::iterator
+ i = mTempSets.begin();
+ i != mTempSets.end(); ++i)
+ {
+ if (*i)
+ (*i)->decRef();
+ }
+
if (mParticleImage)
mParticleImage->decRef();
}
diff --git a/src/particleemitter.h b/src/particleemitter.h
index ed6518f0e..5a68584c6 100644
--- a/src/particleemitter.h
+++ b/src/particleemitter.h
@@ -32,6 +32,7 @@
#include <list>
class Image;
+class ImageSet;
class Map;
class Particle;
@@ -150,5 +151,7 @@ class ParticleEmitter
/** List of emitters the spawned particles are equipped with */
std::list<ParticleEmitter> mParticleChildEmitters;
+
+ std::list<ImageSet*> mTempSets;
};
#endif
diff --git a/src/resources/resourcemanager.cpp b/src/resources/resourcemanager.cpp
index 79231a744..5552b64b1 100644
--- a/src/resources/resourcemanager.cpp
+++ b/src/resources/resourcemanager.cpp
@@ -138,8 +138,16 @@ ResourceManager::~ResourceManager()
}
#endif
if (iter->second)
+ {
cleanUp(iter->second);
- ++iter;
+ ResourceIterator toErase = iter;
+ ++iter;
+ mResources.erase(toErase);
+ }
+ else
+ {
+ ++iter;
+ }
}
}