From fe1d9112a0081c8d7dc1070a9e3d52210e9a22b3 Mon Sep 17 00:00:00 2001 From: Adrian Cojocaru Date: Mon, 25 May 2026 19:47:26 +0300 Subject: [PATCH] [core] Keep `BackendScope` and context valid when closing the thread pool (#4307) --- src/mbgl/vulkan/context.cpp | 2 -- src/mbgl/vulkan/renderer_backend.cpp | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mbgl/vulkan/context.cpp b/src/mbgl/vulkan/context.cpp index d56181f45..ad665f198 100644 --- a/src/mbgl/vulkan/context.cpp +++ b/src/mbgl/vulkan/context.cpp @@ -68,8 +68,6 @@ Context::Context(RendererBackend& backend_) Context::~Context() noexcept { MBGL_VERIFY_THREAD(tid); - backend.getThreadPool().runRenderJobs(true /* closeQueue */); - destroyResources(); { diff --git a/src/mbgl/vulkan/renderer_backend.cpp b/src/mbgl/vulkan/renderer_backend.cpp index 54b8ad62d..92dd650e9 100644 --- a/src/mbgl/vulkan/renderer_backend.cpp +++ b/src/mbgl/vulkan/renderer_backend.cpp @@ -634,6 +634,9 @@ void RendererBackend::initCommandPool() { void RendererBackend::destroyResources() { if (device) device->waitIdle(dispatcher); + gfx::BackendScope scope(*this, gfx::BackendScope::ScopeType::Implicit); + getThreadPool().runRenderJobs(true /* closeQueue */); + context.reset(); commandPool.reset();