14 std::shared_ptr<fml::BasicTaskRunner> worker_task_runner) {
15 if (!worker_task_runner) {
18 return std::shared_ptr<PipelineCompileQueueGLES>(
23 std::shared_ptr<fml::BasicTaskRunner> worker_task_runner)
24 : worker_task_runner_(
std::move(worker_task_runner)) {}
34 bool should_drain =
false;
36 Lock lock(processing_mutex_);
37 if (!is_processing_) {
38 is_processing_ =
true;
52 worker_task_runner_->PostTask(job);
55void PipelineCompileQueueGLES::DrainPendingJobs() {
56 PostJob([weak_queue = weak_from_this()]() {
57 if (
auto queue = std::static_pointer_cast<PipelineCompileQueueGLES>(
61 Lock lock(queue->processing_mutex_);
62 if (!queue->HasPendingJobs()) {
63 queue->is_processing_ = false;
67 queue->DrainPendingJobs();
A task queue designed for managing compilation of pipeline state objects for OpenGL ES backend.
void PostJob(const fml::closure &job) override
Post a compilation job to the worker task runner.
PipelineCompileQueueGLES(const PipelineCompileQueueGLES &)=delete
void OnJobAdded() override
Called by PostJobForDescriptor after a job has been successfully added to the queue....
~PipelineCompileQueueGLES() override
static std::shared_ptr< PipelineCompileQueueGLES > Create(std::shared_ptr< fml::BasicTaskRunner > worker_task_runner)
std::function< void()> closure