/
githubmirror
/
omim
Обзор
Документация
Войти
/
githubmirror
/
omim
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
drape/graphics_context_factory.cpp
52 строки
1 KB
r.kuznetsov
[drape][metal] Removed obsolete std usage, minor fixes.
25 сен 2018, 12:33
25 сен 2018, 12:33
320c691
Код
Авторство
О чём код?
#include "drape/graphics_context_factory.hpp" namespace dp { ThreadSafeFactory::ThreadSafeFactory(GraphicsContextFactory * factory, bool enableSharing) : m_factory(factory) , m_enableSharing(enableSharing) {} ThreadSafeFactory::~ThreadSafeFactory() { delete m_factory; } GraphicsContext * ThreadSafeFactory::GetDrawContext() { return CreateContext([this](){ return m_factory->GetDrawContext(); }, [this](){ return m_factory->IsUploadContextCreated(); }); } GraphicsContext * ThreadSafeFactory::GetResourcesUploadContext() { return CreateContext([this](){ return m_factory->GetResourcesUploadContext(); }, [this](){ return m_factory->IsDrawContextCreated(); }); } GraphicsContext * ThreadSafeFactory::CreateContext(TCreateCtxFn const & createFn, TIsSeparateCreatedFn const & checkFn) { threads::ConditionGuard g(m_condition); GraphicsContext * ctx = createFn(); if (m_enableSharing) { if (!checkFn()) g.Wait(); else g.Signal(); } return ctx; } void ThreadSafeFactory::WaitForInitialization(GraphicsContext * context) { m_factory->WaitForInitialization(context); } void ThreadSafeFactory::SetPresentAvailable(bool available) { m_factory->SetPresentAvailable(available); } } // namespace dp