diff --git a/source/blender/windowmanager/intern/wm_surface.cc b/source/blender/windowmanager/intern/wm_surface.cc index 900023f53a23d7f780d4d0b5c1a4c719e79cf501..7d2ddc415eec0334b11140409557ac9ad3b0eede 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); }