diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-01-06 17:35:05 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-01-06 17:35:05 +0300 |
commit | 691c021679f6a2038536fcec0bdd7de654c79853 (patch) | |
tree | efd27204ba62ac9eae4f8636e2fb0d26b959c1ee /source/blender/draw | |
parent | f0071dfa10b71030ffef478192d5a960a7180961 (diff) |
Fix T82952: Crash changing mesh data block and switching scenes
Regression in 33ac3582bbd5551bdfbc7ef8856640b5e61888f8.
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/intern/draw_cache_impl_mesh.c | 7 |
1 files changed, 6 insertions, 1 deletions
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); |