| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "flutter/common/threads.h" |
| |
| #include <utility> |
| |
| namespace blink { |
| namespace { |
| |
| Threads* g_threads = nullptr; |
| |
| } // namespace |
| |
| Threads::Threads() {} |
| |
| Threads::Threads(ftl::RefPtr<ftl::TaskRunner> platform, |
| ftl::RefPtr<ftl::TaskRunner> gpu, |
| ftl::RefPtr<ftl::TaskRunner> ui, |
| ftl::RefPtr<ftl::TaskRunner> io) |
| : platform_(std::move(platform)), |
| gpu_(std::move(gpu)), |
| ui_(std::move(ui)), |
| io_(std::move(io)) {} |
| |
| Threads::~Threads() {} |
| |
| const ftl::RefPtr<ftl::TaskRunner>& Threads::Platform() { |
| return Get().platform_; |
| } |
| |
| const ftl::RefPtr<ftl::TaskRunner>& Threads::Gpu() { |
| return Get().gpu_; |
| } |
| |
| const ftl::RefPtr<ftl::TaskRunner>& Threads::UI() { |
| return Get().ui_; |
| } |
| |
| const ftl::RefPtr<ftl::TaskRunner>& Threads::IO() { |
| return Get().io_; |
| } |
| |
| const Threads& Threads::Get() { |
| FTL_CHECK(g_threads); |
| return *g_threads; |
| } |
| |
| void Threads::Set(const Threads& threads) { |
| FTL_CHECK(!g_threads); |
| g_threads = new Threads(); |
| *g_threads = threads; |
| } |
| |
| } // namespace blink |