diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-10-17 16:34:06 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-10-17 16:36:44 +0300 |
commit | 2a363e453a8ed7e1d19682d889c3a62e9e71a7d2 (patch) | |
tree | 737d85d70cd071de84a32270aaa2dbbc4a4d9707 | |
parent | 977420e7831773a6bafaacfbfa277165451e7e43 (diff) | |
download | manaplus-2a363e453a8ed7e1d19682d889c3a62e9e71a7d2.tar.gz manaplus-2a363e453a8ed7e1d19682d889c3a62e9e71a7d2.tar.bz2 manaplus-2a363e453a8ed7e1d19682d889c3a62e9e71a7d2.tar.xz manaplus-2a363e453a8ed7e1d19682d889c3a62e9e71a7d2.zip |
dont call setMap from destructors.
-rw-r--r-- | src/being/actor.cpp | 6 | ||||
-rw-r--r-- | src/being/actorsprite.cpp | 3 | ||||
-rw-r--r-- | src/being/localplayer.cpp | 6 |
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(); |