summaryrefslogtreecommitdiff
path: root/src/mbgl/actor/scheduler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/actor/scheduler.cpp')
-rw-r--r--src/mbgl/actor/scheduler.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/mbgl/actor/scheduler.cpp b/src/mbgl/actor/scheduler.cpp
index cb0c7728ec..81e259fe1f 100644
--- a/src/mbgl/actor/scheduler.cpp
+++ b/src/mbgl/actor/scheduler.cpp
@@ -4,7 +4,14 @@
namespace mbgl {
-util::ThreadLocal<Scheduler> g_currentScheduler;
+std::function<void()> Scheduler::bindOnce(std::function<void()> fn) {
+ assert(fn);
+ return [scheduler = makeWeakPtr(), scheduled = std::move(fn)]() mutable {
+ if (!scheduled) return; // Repeated call.
+ auto schedulerGuard = scheduler.lock();
+ if (scheduler) scheduler->schedule(std::move(scheduled));
+ };
+}
static auto& current() {
static util::ThreadLocal<Scheduler> scheduler;
@@ -28,7 +35,7 @@ std::shared_ptr<Scheduler> Scheduler::GetBackground() {
std::shared_ptr<Scheduler> scheduler = weak.lock();
if (!scheduler) {
- weak = scheduler = std::make_shared<ThreadPool>(4);
+ weak = scheduler = std::make_shared<ThreadPool>();
}
return scheduler;