9 #include "flutter/fml/trace_event.h"
16 size_t max_frames_in_flight)
17 : frames_in_flight_sema_(
std::make_shared<fml::Semaphore>(
18 std::max<
std::size_t>(1u, max_frames_in_flight))),
19 context_(
std::move(context)) {
20 if (!context_ || !context_->IsValid()) {
35 TRACE_EVENT0(
"impeller",
"Renderer::Render");
40 if (!surface || !surface->IsValid()) {
44 RenderTarget render_target = surface->GetTargetRenderPassDescriptor();
46 if (render_callback && !render_callback(render_target)) {
50 if (!frames_in_flight_sema_->Wait()) {
54 const auto present_result = surface->Present();
56 frames_in_flight_sema_->Signal();
58 return present_result;