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.
This commit is contained in:
2019-01-24 17:44:13 +01:00
parent b33615a080
commit 7a353a7037
2 changed files with 8 additions and 0 deletions

View File

@@ -118,6 +118,7 @@
#endif #endif
#include "WM_api.h" #include "WM_api.h"
#include "WM_types.h"
static void rna_idname_validate(const char *name, char *r_name) static void rna_idname_validate(const char *name, char *r_name)
@@ -135,6 +136,8 @@ static void rna_Main_ID_remove(
if (do_unlink) { if (do_unlink) {
BKE_id_delete(bmain, id); BKE_id_delete(bmain, id);
RNA_POINTER_INVALIDATE(id_ptr); 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) { else if (ID_REAL_USERS(id) <= 0) {
const int flag = (do_id_user ? 0 : LIB_ID_FREE_NO_USER_REFCOUNT) | const int flag = (do_id_user ? 0 : LIB_ID_FREE_NO_USER_REFCOUNT) |

View File

@@ -44,6 +44,9 @@
#include "DNA_object_types.h" #include "DNA_object_types.h"
#include "DNA_key_types.h" #include "DNA_key_types.h"
#include "WM_api.h"
#include "WM_types.h"
#include "bpy_capi_utils.h" #include "bpy_capi_utils.h"
#include "bpy_rna_id_collection.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); Py_DECREF(ids_fast);
BKE_id_multi_tagged_delete(bmain); 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 { else {
goto error; goto error;