Commit: 691c021679f6a2038536fcec0bdd7de654c79853
Author: Campbell Barton
Date:   Thu Jan 7 01:35:05 2021 +1100
Branches: master
https://developer.blender.org/rB691c021679f6a2038536fcec0bdd7de654c79853

Fix T82952: Crash changing mesh data block and switching scenes

Regression in 33ac3582bbd5551bdfbc7ef8856640b5e61888f8.

===================================================================

M       source/blender/draw/intern/draw_cache_impl_mesh.c

===================================================================

diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c 
b/source/blender/draw/intern/draw_cache_impl_mesh.c
index 239df55db1a..3f014a01680 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -1203,7 +1203,12 @@ void DRW_mesh_batch_cache_create_requested(struct 
TaskGraph *task_graph,
    * In this case the custom-data layers used wont always match in 
`me->runtime.batch_cache`.
    * If we want to display regular mesh data, we should have a separate cache 
for the edit-mesh.
    * See T77359. */
-  const bool is_editmode = (me->edit_mesh != NULL) /* && 
DRW_object_is_in_edit_mode(ob) */;
+  const bool is_editmode = (me->edit_mesh != NULL) &&
+                           /* In rare cases we have the edit-mode data but not 
the generated cache.
+                            * This can happen when switching an objects data 
to a mesh which
+                            * happens to be in edit-mode in another scene, 
see: T82952. */
+                           (me->edit_mesh->mesh_eval_final !=
+                            NULL) /* && DRW_object_is_in_edit_mode(ob) */;
 
   /* This could be set for paint mode too, currently it's only used for 
edit-mode. */
   const bool is_mode_active = is_editmode && DRW_object_is_in_edit_mode(ob);

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to