diff --git a/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.cc b/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.cc index ac6992b8859..3d371a6af78 100644 --- a/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.cc +++ b/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.cc @@ -520,11 +520,13 @@ bool RenderPassGLES::OnEncodeCommands(const Context& context) const { CanDiscardAttachmentWhenDone(stencil0->store_action); } + std::shared_ptr shared_this = shared_from_this(); return reactor_->AddOperation([pass_data, allocator = context.GetResourceAllocator(), - commands = commands_](const auto& reactor) { - auto result = - EncodeCommandsInReactor(*pass_data, allocator, reactor, commands); + render_pass = std::move(shared_this)]( + const auto& reactor) { + auto result = EncodeCommandsInReactor(*pass_data, allocator, reactor, + render_pass->commands_); FML_CHECK(result) << "Must be able to encode GL commands without error."; }); } diff --git a/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.h b/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.h index 48e50760aa9..c76948b65cf 100644 --- a/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.h +++ b/engine/src/flutter/impeller/renderer/backend/gles/render_pass_gles.h @@ -4,13 +4,17 @@ #pragma once +#include + #include "flutter/fml/macros.h" #include "flutter/impeller/renderer/backend/gles/reactor_gles.h" #include "flutter/impeller/renderer/render_pass.h" namespace impeller { -class RenderPassGLES final : public RenderPass { +class RenderPassGLES final + : public RenderPass, + public std::enable_shared_from_this { public: // |RenderPass| ~RenderPassGLES() override;