forked from organicmaps/organicmaps
[core] crashes on wrong sequence calls. do it more secure
This commit is contained in:
parent
062d39a078
commit
6fd88f4b62
5 changed files with 9 additions and 21 deletions
|
@ -20,7 +20,6 @@
|
|||
|
||||
BookmarkManager::BookmarkManager(Framework & f)
|
||||
: m_framework(f)
|
||||
, m_activeMark(NULL)
|
||||
, m_bmScreen(0)
|
||||
, m_lastScale(1.0)
|
||||
, m_cache(NULL)
|
||||
|
@ -308,17 +307,10 @@ bool BookmarkManager::DeleteBmCategory(size_t index)
|
|||
|
||||
void BookmarkManager::ActivateMark(UserMark const * mark)
|
||||
{
|
||||
if (m_activeMark != NULL)
|
||||
{
|
||||
m_activeMark->Diactivate();
|
||||
m_activeMark = NULL;
|
||||
}
|
||||
|
||||
if (mark == NULL)
|
||||
return;
|
||||
|
||||
m_activeMark = mark;
|
||||
m_activeMark->Activate();
|
||||
for_each(m_categories.begin(), m_categories.end(), bind(&UserMarkContainer::DiactivateMark, _1));
|
||||
for_each(m_userMarkLayers.begin(), m_userMarkLayers.end(), bind(&UserMarkContainer::DiactivateMark, _1));
|
||||
if (mark != NULL)
|
||||
mark->Activate();
|
||||
}
|
||||
|
||||
UserMark const * BookmarkManager::FindNearestUserMark(const m2::AnyRectD & rect)
|
||||
|
|
|
@ -17,7 +17,6 @@ class BookmarkManager : private noncopyable
|
|||
Framework & m_framework;
|
||||
|
||||
vector<UserMarkContainer * > m_userMarkLayers;
|
||||
UserMark const * m_activeMark;
|
||||
|
||||
graphics::Screen * m_bmScreen;
|
||||
mutable double m_lastScale;
|
||||
|
|
|
@ -31,8 +31,3 @@ void UserMark::Activate() const
|
|||
{
|
||||
m_container->ActivateMark(this);
|
||||
}
|
||||
|
||||
void UserMark::Diactivate() const
|
||||
{
|
||||
m_container->DiactivateMark();
|
||||
}
|
||||
|
|
|
@ -39,7 +39,6 @@ public:
|
|||
protected:
|
||||
friend class BookmarkManager;
|
||||
void Activate() const;
|
||||
void Diactivate() const;
|
||||
|
||||
protected:
|
||||
m2::PointD m_ptOrg;
|
||||
|
|
|
@ -120,8 +120,11 @@ void UserMarkContainer::ActivateMark(UserMark const * mark)
|
|||
|
||||
void UserMarkContainer::DiactivateMark()
|
||||
{
|
||||
KillActivationAnim();
|
||||
m_activeMark = NULL;
|
||||
if (m_activeMark != NULL)
|
||||
{
|
||||
KillActivationAnim();
|
||||
m_activeMark = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void UserMarkContainer::Clear()
|
||||
|
|
Loading…
Add table
Reference in a new issue