blob: 2e12163bf9059bca0d5aa25dab0fa168641eeb4a [file]
// Copyright 2013 The Flutter 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/fml/task_runner_util.h"
namespace fml {
WrapperBasicTaskRunner::WrapperBasicTaskRunner(
fml::RefPtr<fml::TaskRunner> task_runner)
: task_runner_(std::move(task_runner)) {}
void WrapperBasicTaskRunner::PostTask(const fml::closure& task) {
task_runner_->PostTask(task);
}
ConditionalBasicTaskRunner::ConditionalBasicTaskRunner(
fml::RefPtr<fml::TaskRunner> task_runner,
std::function<bool()> is_usable)
: task_runner_(std::move(task_runner)),
is_usable_(
std::make_shared<std::function<bool()>>(std::move(is_usable))) {}
void ConditionalBasicTaskRunner::PostTask(const fml::closure& task) {
auto task_wrapper = [task, weak_is_usable = std::weak_ptr(is_usable_)] {
std::shared_ptr<std::function<bool()>> is_usable = weak_is_usable.lock();
if (is_usable && (*is_usable)()) {
task();
}
};
task_runner_->PostTask(task_wrapper);
}
} // namespace fml