/
githubmirror
/
omim
Обзор
Документация
Войти
/
githubmirror
/
omim
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
drape_frontend/drape_notifier.cpp
36 строк
1 KB
Maksim Andrianov
Refactored thead pools
29 янв 2019, 17:29
29 янв 2019, 17:29
db2b3db
Код
Авторство
О чём код?
#include "drape_frontend/drape_notifier.hpp" #include "drape_frontend/message_subclasses.hpp" #include "drape/drape_routine.hpp" namespace df { DrapeNotifier::DrapeNotifier(ref_ptr<ThreadsCommutator> commutator) : m_commutator(commutator) , m_counter(kInvalidId + 1) {} uint64_t DrapeNotifier::Notify(ThreadsCommutator::ThreadName threadName, base::thread_pool::delayed::ThreadPool::Duration const & duration, bool repeating, Functor && functor) { uint64_t const notifyId = m_counter++; NotifyImpl(threadName, duration, repeating, notifyId, std::move(functor)); return notifyId; } void DrapeNotifier::NotifyImpl(ThreadsCommutator::ThreadName threadName, base::thread_pool::delayed::ThreadPool::Duration const & duration, bool repeating, uint64_t notifyId, Functor && functor) { dp::DrapeRoutine::RunDelayed(duration, [this, threadName, duration, repeating, notifyId, functor = std::move(functor)]() mutable { m_commutator->PostMessage(threadName, make_unique_dp<NotifyRenderThreadMessage>(functor, notifyId), MessagePriority::Normal); if (repeating) NotifyImpl(threadName, duration, repeating, notifyId, std::move(functor)); }); } } // namespace df