summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-10-17 16:34:06 +0300
committerAndrei Karas <akaras@inbox.ru>2013-10-17 16:36:44 +0300
commit2a363e453a8ed7e1d19682d889c3a62e9e71a7d2 (patch)
tree737d85d70cd071de84a32270aaa2dbbc4a4d9707
parent977420e7831773a6bafaacfbfa277165451e7e43 (diff)
downloadmv-2a363e453a8ed7e1d19682d889c3a62e9e71a7d2.tar.gz
mv-2a363e453a8ed7e1d19682d889c3a62e9e71a7d2.tar.bz2
mv-2a363e453a8ed7e1d19682d889c3a62e9e71a7d2.tar.xz
mv-2a363e453a8ed7e1d19682d889c3a62e9e71a7d2.zip
dont call setMap from destructors.
-rw-r--r--src/being/actor.cpp6
-rw-r--r--src/being/actorsprite.cpp3
-rw-r--r--src/being/localplayer.cpp6
3 files changed, 13 insertions, 2 deletions
diff --git a/src/being/actor.cpp b/src/being/actor.cpp
index f32105682..62ab4fc83 100644
--- a/src/being/actor.cpp
+++ b/src/being/actor.cpp
@@ -35,7 +35,11 @@ Actor::Actor():
Actor::~Actor()
{
- setMap(nullptr);
+ if (mMap)
+ {
+ mMap->removeActor(mMapActor);
+ mMap = nullptr;
+ }
}
void Actor::setMap(Map *const map)
diff --git a/src/being/actorsprite.cpp b/src/being/actorsprite.cpp
index 162d5d661..7d4e7d10e 100644
--- a/src/being/actorsprite.cpp
+++ b/src/being/actorsprite.cpp
@@ -59,7 +59,8 @@ ActorSprite::ActorSprite(const int id) :
ActorSprite::~ActorSprite()
{
- setMap(nullptr);
+ mChildParticleEffects.clear();
+ mMustResetParticles = true;
mUsedTargetCursor = nullptr;
diff --git a/src/being/localplayer.cpp b/src/being/localplayer.cpp
index ee77c9831..b1f577197 100644
--- a/src/being/localplayer.cpp
+++ b/src/being/localplayer.cpp
@@ -206,6 +206,12 @@ LocalPlayer::~LocalPlayer()
config.removeListeners(this);
serverConfig.removeListener("enableBuggyServers", this);
+ navigateClean();
+ mCrossX = 0;
+ mCrossY = 0;
+
+ updateNavigateList();
+
if (mAwayDialog)
{
soundManager.volumeRestore();