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
diff options
context:
space:
mode:
authorr.kuznetsov <r.kuznetsov@corp.mail.ru>2016-02-11 18:54:04 +0300
committerSergey Yershov <yershov@corp.mail.ru>2016-03-23 16:20:45 +0300
commitbc514eaa3210a5dd22707cfdf0eaa89774cb6790 (patch)
tree707591cb65ce836386bcb85f7e0714a07b795f1e /drape/overlay_tree.hpp
parent4cc076b54c1939118d4ba37df69a45df1fd71d42 (diff)
Overlay tree optimization
Diffstat (limited to 'drape/overlay_tree.hpp')
-rw-r--r--drape/overlay_tree.hpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/drape/overlay_tree.hpp b/drape/overlay_tree.hpp
index d56ef3b43f..878bd1938b 100644
--- a/drape/overlay_tree.hpp
+++ b/drape/overlay_tree.hpp
@@ -9,6 +9,7 @@
#include "std/array.hpp"
#include "std/vector.hpp"
+#include "std/unordered_map.hpp"
namespace dp
{
@@ -39,12 +40,12 @@ class OverlayTree : public m4::Tree<ref_ptr<OverlayHandle>, detail::OverlayTrait
public:
OverlayTree();
- bool Frame(bool is3d);
+ bool Frame();
bool IsNeedUpdate() const;
- void ForceUpdate();
void StartOverlayPlacing(ScreenBase const & screen);
void Add(ref_ptr<OverlayHandle> handle);
+ void Remove(ref_ptr<OverlayHandle> handle);
void EndOverlayPlacing();
void Select(m2::RectD const & rect, TOverlayContainer & result) const;
@@ -72,11 +73,16 @@ private:
ref_ptr<OverlayHandle> const & parentOverlay);
bool CheckHandle(ref_ptr<OverlayHandle> handle, int currentRank,
ref_ptr<OverlayHandle> & parentOverlay) const;
- void AddHandleToDelete(ref_ptr<OverlayHandle> const & handle);
+ void DeleteHandle(ref_ptr<OverlayHandle> const & handle);
+
+ uint64_t GetHandleKey(ref_ptr<OverlayHandle> const & handle) const;
int m_frameCounter;
array<vector<ref_ptr<OverlayHandle>>, dp::OverlayRanksCount> m_handles;
vector<ref_ptr<OverlayHandle>> m_handlesToDelete;
+
+ unordered_map<uint64_t, ref_ptr<OverlayHandle>> m_handlesCache;
+
bool m_followingMode;
#ifdef COLLECT_DISPLACEMENT_INFO