From aef7a17aa52e1d97e26fa07293d9cb8a604c111f Mon Sep 17 00:00:00 2001 From: Miguel Pozo <pragma37@gmail.com> Date: Mon, 13 Nov 2023 15:35:11 +0100 Subject: [PATCH] Fix #114189: Workbench: VR Session crashes on exit Ensure there's a valid GPU context when freeing a wm_surface. Pull Request: https://projects.blender.org/blender/blender/pulls/114795 --- source/blender/windowmanager/intern/wm_surface.cc | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/source/blender/windowmanager/intern/wm_surface.cc b/source/blender/windowmanager/intern/wm_surface.cc index 900023f53a2..7d2ddc415ee 100644 --- a/source/blender/windowmanager/intern/wm_surface.cc +++ b/source/blender/windowmanager/intern/wm_surface.cc @@ -108,18 +108,16 @@ void wm_surface_add(wmSurface *surface) void wm_surface_remove(wmSurface *surface) { - if (surface == g_drawable) { - wm_surface_clear_drawable(); - } BLI_remlink(&global_surface_list, surface); + /* Ensure GPU context is bound to free GPU resources. */ + wm_surface_make_drawable(surface); surface->free_data(surface); + wm_surface_clear_drawable(); MEM_freeN(surface); } void wm_surfaces_free() { - wm_surface_clear_drawable(); - LISTBASE_FOREACH_MUTABLE (wmSurface *, surf, &global_surface_list) { wm_surface_remove(surf); } -- GitLab