Files
comaps/drape_frontend/drape_api.cpp
Konstantin Pastbin e3e4a1985a Organic Maps sources as of 02.04.2025 (fad26bbf22ac3da75e01e62aa01e5c8e11861005)
To expand with full Organic Maps and Maps.ME commits history run:
  git remote add om-historic [om-historic.git repo url]
  git fetch --tags om-historic
  git replace squashed-history historic-commits
2025-05-08 21:10:51 +07:00

78 lines
2.4 KiB
C++

#include "drape_frontend/drape_api.hpp"
#include "drape_frontend/drape_engine.hpp"
#include "drape_frontend/message_subclasses.hpp"
namespace df
{
void DrapeApi::SetDrapeEngine(ref_ptr<DrapeEngine> engine)
{
m_engine.Set(engine);
}
void DrapeApi::AddLine(std::string const & id, DrapeApiLineData const & data)
{
DrapeEngineLockGuard lock(m_engine);
if (!lock)
return;
auto & threadCommutator = lock.Get()->m_threadCommutator;
auto const it = m_lines.find(id);
if (it != m_lines.end())
{
threadCommutator->PostMessage(ThreadsCommutator::ResourceUploadThread,
make_unique_dp<DrapeApiRemoveMessage>(id),
MessagePriority::Normal);
}
m_lines[id] = data;
TLines lines;
lines.insert(std::make_pair(id, data));
threadCommutator->PostMessage(ThreadsCommutator::ResourceUploadThread,
make_unique_dp<DrapeApiAddLinesMessage>(lines),
MessagePriority::Normal);
}
void DrapeApi::RemoveLine(std::string const & id)
{
DrapeEngineLockGuard lock(m_engine);
if (!lock)
return;
auto & threadCommutator = lock.Get()->m_threadCommutator;
m_lines.erase(id);
threadCommutator->PostMessage(ThreadsCommutator::ResourceUploadThread,
make_unique_dp<DrapeApiRemoveMessage>(id),
MessagePriority::Normal);
}
void DrapeApi::Clear()
{
DrapeEngineLockGuard lock(m_engine);
if (!lock)
return;
auto & threadCommutator = lock.Get()->m_threadCommutator;
m_lines.clear();
threadCommutator->PostMessage(ThreadsCommutator::ResourceUploadThread,
make_unique_dp<DrapeApiRemoveMessage>("", true /* remove all */),
MessagePriority::Normal);
}
void DrapeApi::Invalidate()
{
DrapeEngineLockGuard lock(m_engine);
if (!lock)
return;
auto & threadCommutator = lock.Get()->m_threadCommutator;
threadCommutator->PostMessage(ThreadsCommutator::ResourceUploadThread,
make_unique_dp<DrapeApiRemoveMessage>("", true /* remove all */),
MessagePriority::Normal);
threadCommutator->PostMessage(ThreadsCommutator::ResourceUploadThread,
make_unique_dp<DrapeApiAddLinesMessage>(m_lines),
MessagePriority::Normal);
}
} // namespace df