diff --git a/engine/src/flutter/impeller/aiks/paint.h b/engine/src/flutter/impeller/aiks/paint.h index 805f719e3ad..6b90aa1c433 100644 --- a/engine/src/flutter/impeller/aiks/paint.h +++ b/engine/src/flutter/impeller/aiks/paint.h @@ -12,6 +12,7 @@ namespace impeller { struct Paint { Color color; + Scalar stroke_width = 0.0; }; } // namespace impeller diff --git a/engine/src/flutter/impeller/compositor/pipeline.h b/engine/src/flutter/impeller/compositor/pipeline.h index 35f1351af76..e0f1ab5b0df 100644 --- a/engine/src/flutter/impeller/compositor/pipeline.h +++ b/engine/src/flutter/impeller/compositor/pipeline.h @@ -63,10 +63,21 @@ class PipelineT { context, Builder::MakeDefaultPipelineDescriptor(context))) {} - std::shared_ptr WaitAndGet() { return pipeline_future_.get(); } + std::shared_ptr WaitAndGet() { + if (did_wait_) { + return pipeline_; + } + did_wait_ = true; + if (pipeline_future_.valid()) { + pipeline_ = pipeline_future_.get(); + } + return pipeline_; + } private: PipelineFuture pipeline_future_; + std::shared_ptr pipeline_; + bool did_wait_ = false; FML_DISALLOW_COPY_AND_ASSIGN(PipelineT); }; diff --git a/engine/src/flutter/impeller/entity/entity_renderer_impl.mm b/engine/src/flutter/impeller/entity/entity_renderer_impl.mm index bbd4cd42cbc..68e9af231f9 100644 --- a/engine/src/flutter/impeller/entity/entity_renderer_impl.mm +++ b/engine/src/flutter/impeller/entity/entity_renderer_impl.mm @@ -31,8 +31,7 @@ bool EntityRendererImpl::RenderEntity(const Surface& surface, } if (entity.HasContents()) { - using CurrentPipeline = decltype(solid_fill_pipeline_)::element_type; - using VS = CurrentPipeline::VertexShader; + using VS = SolidFillPipeline::VertexShader; Command cmd; cmd.pipeline = solid_fill_pipeline_->WaitAndGet();