From a2ee85f47799b625039602f9ef5948d24b46cc90 Mon Sep 17 00:00:00 2001 From: Haroon Qureshi Date: Fri, 24 Apr 2026 06:41:48 -0700 Subject: [PATCH] Fix wasm flickering. Always execute the engine in non-threading (wasm) builds. And stop rendering if any beginFrame call returns false. PiperOrigin-RevId: 905000139 Change-Id: I0a6f06a07a8fc0ab0251a67be13a9d170d4a905d --- .../filament/filament/filament_context.cc | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/experimental/filament/filament/filament_context.cc b/src/experimental/filament/filament/filament_context.cc index 8c159ce2..e367b44f 100644 --- a/src/experimental/filament/filament/filament_context.cc +++ b/src/experimental/filament/filament/filament_context.cc @@ -118,6 +118,9 @@ FilamentContext::FrameHandle FilamentContext::Render( if (!render_began) { render_began = renderer_->beginFrame(window_swap_chain_); } + if (!render_began) { + break; + } if (render_began) { SceneView::RenderRequest scene_view_request; scene_view_request.draw_mode = request.draw_mode; @@ -139,6 +142,9 @@ FilamentContext::FrameHandle FilamentContext::Render( if (!render_began) { render_began = renderer_->beginFrame(offscreen_swap_chain_); } + if (!render_began) { + break; + } if (render_began) { SceneView::RenderRequest scene_view_request; scene_view_request.draw_mode = request.draw_mode; @@ -154,10 +160,9 @@ FilamentContext::FrameHandle FilamentContext::Render( if (render_began) { renderer_->endFrame(); - render_began = false; - if constexpr (!UTILS_HAS_THREADING) { - engine_->execute(); - } + } + if constexpr (!UTILS_HAS_THREADING) { + engine_->execute(); } if (!read_requests.empty()) {