From 7a353a703770ea1c63f24733fbb2e37eafcbf98c Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Thu, 24 Jan 2019 17:44:13 +0100 Subject: Fix T60350: Removed objects that are still in the outliner will crash Blender. We need to force UI to fully redraw, BKE_id_delete & co won't do that for us. --- source/blender/makesrna/intern/rna_main_api.c | 3 +++ source/blender/python/intern/bpy_rna_id_collection.c | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index af2f007307b..806b1f6521b 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -118,6 +118,7 @@ #endif #include "WM_api.h" +#include "WM_types.h" static void rna_idname_validate(const char *name, char *r_name) @@ -135,6 +136,8 @@ static void rna_Main_ID_remove( if (do_unlink) { BKE_id_delete(bmain, id); RNA_POINTER_INVALIDATE(id_ptr); + /* Force full redraw, mandatory to avoid crashes when running this from UI... */ + WM_main_add_notifier(NC_WINDOW, NULL); } else if (ID_REAL_USERS(id) <= 0) { const int flag = (do_id_user ? 0 : LIB_ID_FREE_NO_USER_REFCOUNT) | diff --git a/source/blender/python/intern/bpy_rna_id_collection.c b/source/blender/python/intern/bpy_rna_id_collection.c index 3fc12d4cc54..2fa387a0709 100644 --- a/source/blender/python/intern/bpy_rna_id_collection.c +++ b/source/blender/python/intern/bpy_rna_id_collection.c @@ -44,6 +44,9 @@ #include "DNA_object_types.h" #include "DNA_key_types.h" +#include "WM_api.h" +#include "WM_types.h" + #include "bpy_capi_utils.h" #include "bpy_rna_id_collection.h" @@ -351,6 +354,8 @@ static PyObject *bpy_batch_remove(PyObject *UNUSED(self), PyObject *args, PyObje Py_DECREF(ids_fast); BKE_id_multi_tagged_delete(bmain); + /* Force full redraw, mandatory to avoid crashes when running this from UI... */ + WM_main_add_notifier(NC_WINDOW, NULL); } else { goto error; -- cgit v1.2.3