forked from organicmaps/organicmaps
[search] Clear offsets in viewport cache.
This commit is contained in:
parent
28d304204d
commit
655562b2e5
2 changed files with 15 additions and 2 deletions
|
@ -20,7 +20,7 @@ namespace search
|
|||
|
||||
Query::Query(Index const * pIndex, search::CategoriesHolder const * pCategories)
|
||||
: m_pIndex(pIndex), m_pCategories(pCategories), m_viewport(m2::RectD::GetEmptyRect()),
|
||||
m_viewportExtended(m2::RectD::GetEmptyRect())
|
||||
m_viewportExtended(m2::RectD::GetEmptyRect()), m_bOffsetsCacheIsValid(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ void Query::SetViewport(m2::RectD const & viewport)
|
|||
{
|
||||
// TODO: Clear m_viewportExtended when mwm index is added or removed!
|
||||
|
||||
if (m_viewport != viewport)
|
||||
if (m_viewport != viewport || !m_bOffsetsCacheIsValid)
|
||||
{
|
||||
m_viewport = viewport;
|
||||
m_viewportExtended = m_viewport;
|
||||
|
@ -42,8 +42,16 @@ void Query::SetViewport(m2::RectD const & viewport)
|
|||
}
|
||||
}
|
||||
|
||||
void Query::ClearCache()
|
||||
{
|
||||
m_offsetsInViewport.clear();
|
||||
m_bOffsetsCacheIsValid = false;
|
||||
}
|
||||
|
||||
void Query::UpdateViewportOffsets()
|
||||
{
|
||||
m_offsetsInViewport.clear();
|
||||
|
||||
vector<MwmInfo> mwmInfo;
|
||||
m_pIndex->GetMwmInfo(mwmInfo);
|
||||
m_offsetsInViewport.resize(mwmInfo.size());
|
||||
|
@ -81,6 +89,8 @@ void Query::UpdateViewportOffsets()
|
|||
}
|
||||
}
|
||||
|
||||
m_bOffsetsCacheIsValid = true;
|
||||
|
||||
size_t offsetsCached = 0;
|
||||
for (MwmSet::MwmId mwmId = 0; mwmId < mwmInfo.size(); ++mwmId)
|
||||
offsetsCached += m_offsetsInViewport[mwmId].size();
|
||||
|
|
|
@ -30,6 +30,8 @@ public:
|
|||
function<void (Result const &)> const & f,
|
||||
unsigned int resultsNeeded = 10);
|
||||
|
||||
void ClearCache();
|
||||
|
||||
private:
|
||||
|
||||
friend class impl::FeatureLoader;
|
||||
|
@ -54,6 +56,7 @@ private:
|
|||
|
||||
scoped_ptr<KeywordMatcher> m_pKeywordMatcher;
|
||||
|
||||
bool m_bOffsetsCacheIsValid;
|
||||
vector<unordered_set<uint32_t> > m_offsetsInViewport;
|
||||
|
||||
my::limited_priority_queue<impl::IntermediateResult> m_results;
|
||||
|
|
Loading…
Add table
Reference in a new issue