Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/map
diff options
context:
space:
mode:
authorYuri Gorshenin <ygorshenin@chromium.org>2015-03-11 18:48:58 +0300
committerAlex Zolotarev <alex@maps.me>2015-09-23 02:38:48 +0300
commit8fdbf7ad9730aeaf152f8956e76c495368954b9d (patch)
tree21563aebe2bba51e51b7fe3546a47d0c6c4bb5f8 /map
parent1ab260d29a389dda2daebc258ae29f97c19bd6c8 (diff)
[bookmark] Fixed memory leaks in UserMarkCopy.
Diffstat (limited to 'map')
-rw-r--r--map/bookmark.cpp4
-rw-r--r--map/bookmark.hpp2
-rw-r--r--map/pin_click_manager.cpp7
-rw-r--r--map/pin_click_manager.hpp6
-rw-r--r--map/user_mark.hpp19
5 files changed, 18 insertions, 20 deletions
diff --git a/map/bookmark.cpp b/map/bookmark.cpp
index edda1f5cad..c0813075fa 100644
--- a/map/bookmark.cpp
+++ b/map/bookmark.cpp
@@ -26,9 +26,9 @@
#include "../std/algorithm.hpp"
#include "../std/auto_ptr.hpp"
-UserMarkCopy * Bookmark::Copy() const
+unique_ptr<UserMarkCopy> Bookmark::Copy() const
{
- return new UserMarkCopy(this, false);
+ return unique_ptr<UserMarkCopy>(new UserMarkCopy(this, false));
}
graphics::DisplayList * Bookmark::GetDisplayList(UserMarkDLCache * cache) const
diff --git a/map/bookmark.hpp b/map/bookmark.hpp
index fde150be50..2d3dd5d4e5 100644
--- a/map/bookmark.hpp
+++ b/map/bookmark.hpp
@@ -108,7 +108,7 @@ public:
double GetScale() const { return m_data.GetScale(); }
void SetScale(double scale) { m_data.SetScale(scale); }
- virtual UserMarkCopy * Copy() const;
+ unique_ptr<UserMarkCopy> Copy() const override;
virtual graphics::DisplayList * GetDisplayList(UserMarkDLCache * cache) const;
virtual double GetAnimScaleFactor() const;
diff --git a/map/pin_click_manager.cpp b/map/pin_click_manager.cpp
index f95d844ead..54597b12e9 100644
--- a/map/pin_click_manager.cpp
+++ b/map/pin_click_manager.cpp
@@ -28,7 +28,7 @@ void PinClickManager::Hide()
void PinClickManager::OnShowMark(UserMark const * mark)
{
if (mark != NULL)
- OnActivateUserMark(mark->Copy());
+ m_userMarkListener(mark->Copy());
SetBalloonVisible(mark != NULL);
}
@@ -57,11 +57,6 @@ void PinClickManager::ClearListeners()
m_dismissListener = TDismissListener();
}
-void PinClickManager::OnActivateUserMark(UserMarkCopy * mark)
-{
- m_userMarkListener(mark);
-}
-
void PinClickManager::OnDismiss()
{
// Can be called before the listeners will be attached (clearing on activity start).
diff --git a/map/pin_click_manager.hpp b/map/pin_click_manager.hpp
index 8f9a5d0e66..ae990f1cfc 100644
--- a/map/pin_click_manager.hpp
+++ b/map/pin_click_manager.hpp
@@ -5,8 +5,9 @@
#include "../geometry/point2d.hpp"
-#include "../std/shared_ptr.hpp"
#include "../std/function.hpp"
+#include "../std/shared_ptr.hpp"
+#include "../std/unique_ptr.hpp"
class Framework;
@@ -19,7 +20,6 @@ class PinClickManager
{
Framework & m_f;
- void OnActivateUserMark(UserMarkCopy * mark);
void OnDismiss();
void SetBalloonVisible(bool isVisible);
@@ -41,7 +41,7 @@ private:
/// @name Platform dependent listeners to show special activities.
//@{
// You must delete UserMarkCopy obtained by this callback
- typedef function<void (UserMarkCopy *)> TUserMarkListener;
+ typedef function<void (unique_ptr<UserMarkCopy>)> TUserMarkListener;
TUserMarkListener m_userMarkListener;
typedef function<void (void)> TDismissListener;
TDismissListener m_dismissListener;
diff --git a/map/user_mark.hpp b/map/user_mark.hpp
index 5bf34c0db3..0218bcb019 100644
--- a/map/user_mark.hpp
+++ b/map/user_mark.hpp
@@ -6,8 +6,9 @@
#include "../search/result.hpp"
-#include "../std/string.hpp"
#include "../std/noncopyable.hpp"
+#include "../std/string.hpp"
+#include "../std/unique_ptr.hpp"
class UserMarkContainer;
class PaintOverlayEvent;
@@ -40,7 +41,7 @@ public:
void GetLatLon(double & lat, double & lon) const;
virtual bool IsCustomDrawable() const { return false;}
virtual Type GetMarkType() const = 0;
- virtual UserMarkCopy * Copy() const = 0;
+ virtual unique_ptr<UserMarkCopy> Copy() const = 0;
protected:
m2::PointD m_ptOrg;
@@ -95,9 +96,10 @@ public:
string const & GetID() const { return m_id; }
void SetID(string const & id) { m_id = id; }
- virtual UserMarkCopy * Copy() const
+ unique_ptr<UserMarkCopy> Copy() const override
{
- return new UserMarkCopy(new ApiMarkPoint(m_name, m_id, m_ptOrg, m_container));
+ return unique_ptr<UserMarkCopy>(
+ new UserMarkCopy(new ApiMarkPoint(m_name, m_id, m_ptOrg, m_container)));
}
private:
@@ -129,9 +131,10 @@ public:
feature::FeatureMetadata const & GetMetadata() const { return m_metadata; }
void SetMetadata(feature::FeatureMetadata const & metadata) { m_metadata = metadata; }
- virtual UserMarkCopy * Copy() const
+ unique_ptr<UserMarkCopy> Copy() const override
{
- return new UserMarkCopy(new SearchMarkPoint(m_info, m_ptOrg, m_container));
+ return unique_ptr<UserMarkCopy>(
+ new UserMarkCopy(new SearchMarkPoint(m_info, m_ptOrg, m_container)));
}
protected:
@@ -146,9 +149,9 @@ public:
: SearchMarkPoint(m2::PointD(0.0, 0.0), container) {}
UserMark::Type GetMarkType() const { return POI; }
- virtual UserMarkCopy * Copy() const
+ unique_ptr<UserMarkCopy> Copy() const override
{
- return new UserMarkCopy(this, false);
+ return unique_ptr<UserMarkCopy>(new UserMarkCopy(this, false));
}
void SetPtOrg(m2::PointD const & ptOrg) { m_ptOrg = ptOrg; }