forked from organicmaps/organicmaps
we need to stay on the same pipeline after flush dynamic page
This commit is contained in:
parent
1a5be1754b
commit
17dd464dff
2 changed files with 37 additions and 28 deletions
|
@ -736,8 +736,10 @@ namespace graphics
|
|||
|
||||
void GeometryBatcher::flushDynamicPage()
|
||||
{
|
||||
int currentDynamicPage = m_dynamicPage;
|
||||
callClearPageFns(m_dynamicPage);
|
||||
changeDynamicPage();
|
||||
if (currentDynamicPage != m_dynamicPage)
|
||||
changeDynamicPage();
|
||||
}
|
||||
|
||||
int GeometryBatcher::nextDynamicPage() const
|
||||
|
@ -841,39 +843,47 @@ namespace graphics
|
|||
|
||||
ids[i] = staticCache->findInfo(*infos[i]);
|
||||
|
||||
if (ids[i] == invalidPageHandle())
|
||||
if (ids[i] != invalidPageHandle())
|
||||
{
|
||||
ids[i] = staticCache->findInfo(infos[i]->cacheKey());
|
||||
if (ids[i] == invalidPageHandle())
|
||||
{
|
||||
ids[i] = dynamicCache->findInfo(*infos[i]);
|
||||
if (ids[i] == invalidPageHandle())
|
||||
{
|
||||
if (dynamicCache->hasRoom(*infos[i]))
|
||||
ids[i] = packID(m_dynamicPage, dynamicCache->mapInfo(*infos[i]));
|
||||
else
|
||||
{
|
||||
packed = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
ids[i] = packID(m_dynamicPage, ids[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
ids[i] = staticCache->addParentInfo(*infos[i]);
|
||||
ids[i] = packID(m_startStaticPage, ids[i]);
|
||||
}
|
||||
ids[i] = packID(m_startStaticPage, ids[i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
ids[i] = staticCache->findInfo(infos[i]->cacheKey());
|
||||
if (ids[i] != invalidPageHandle())
|
||||
{
|
||||
ids[i] = staticCache->addParentInfo(*infos[i]);
|
||||
ids[i] = packID(m_startStaticPage, ids[i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
ids[i] = dynamicCache->findInfo(*infos[i]);
|
||||
if (ids[i] != invalidPageHandle())
|
||||
{
|
||||
ids[i] = packID(m_dynamicPage, ids[i]);
|
||||
}
|
||||
else
|
||||
ids[i] = packID(m_startStaticPage, ids[i]);
|
||||
{
|
||||
if (dynamicCache->hasRoom(*infos[i]))
|
||||
ids[i] = packID(m_dynamicPage, dynamicCache->mapInfo(*infos[i]));
|
||||
else
|
||||
{
|
||||
packed = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (packed)
|
||||
return packed;
|
||||
return true;
|
||||
else
|
||||
{
|
||||
#ifdef DEBUG
|
||||
int lastPage = m_dynamicPage;
|
||||
#endif
|
||||
flushDynamicPage();
|
||||
ASSERT(lastPage == m_dynamicPage, ());
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
@ -164,11 +164,10 @@ void Drawer::drawPath(di::PathInfo const & path, di::DrawRule const * rules, siz
|
|||
}
|
||||
else
|
||||
{
|
||||
LOG(LERROR, ("couldn't successfully pack a sequence of path styles as a whole"));
|
||||
buffer_vector<m2::PointU, 8> rects;
|
||||
for (unsigned i = 0; i < count; ++i)
|
||||
rects.push_back(infos[i]->resourceSize());
|
||||
LOG(LERROR, (rects));
|
||||
LOG(LERROR, ("couldn't successfully pack a sequence of path styles as a whole :" , rects));
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue