diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-05-21 15:54:08 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-05-21 16:07:01 +0300 |
commit | 91ce3087aa7f763d202d913a3d77e571662654c9 (patch) | |
tree | 5ee0ded5331dbe48d3c67985c8a7271306115a39 /source/blender/blenkernel/intern/displist.c | |
parent | 0fc97dc73d828b0f2dec16c67dc7a0153e04470f (diff) |
Fix T64842: crash rendering files with bevel curves
This is old logic that no longer makes sense in the new depsgraph, and causes
issues when multiple threads try to modify the same bevel object.
Differential Revision: https://developer.blender.org/D4913
Diffstat (limited to 'source/blender/blenkernel/intern/displist.c')
-rw-r--r-- | source/blender/blenkernel/intern/displist.c | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index cc1c73b1e68..c8d6f7ae313 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -723,7 +723,7 @@ static float displist_calc_taper(Depsgraph *depsgraph, Scene *scene, Object *tap dl = taperobj->runtime.curve_cache ? taperobj->runtime.curve_cache->disp.first : NULL; if (dl == NULL) { - BKE_displist_make_curveTypes(depsgraph, scene, taperobj, false, false, NULL); + BKE_displist_make_curveTypes(depsgraph, scene, taperobj, false, false); dl = taperobj->runtime.curve_cache->disp.first; } if (dl) { @@ -1527,7 +1527,6 @@ static void do_makeDispListCurveTypes(Depsgraph *depsgraph, ListBase *dispbase, const bool for_render, const bool for_orco, - LinkNode *ob_cyclic_list, Mesh **r_final) { Curve *cu = ob->data; @@ -1571,7 +1570,7 @@ static void do_makeDispListCurveTypes(Depsgraph *depsgraph, BKE_curve_bevelList_make(ob, &nubase, for_render); /* If curve has no bevel will return nothing */ - BKE_curve_bevel_make(depsgraph, scene, ob, &dlbev, for_render, ob_cyclic_list); + BKE_curve_bevel_make(ob, &dlbev); /* no bevel or extrude, and no width correction? */ if (!dlbev.first && cu->width == 1.0f) { @@ -1786,12 +1785,8 @@ static void do_makeDispListCurveTypes(Depsgraph *depsgraph, } } -void BKE_displist_make_curveTypes(Depsgraph *depsgraph, - Scene *scene, - Object *ob, - const bool for_render, - const bool for_orco, - LinkNode *ob_cyclic_list) +void BKE_displist_make_curveTypes( + Depsgraph *depsgraph, Scene *scene, Object *ob, const bool for_render, const bool for_orco) { ListBase *dispbase; @@ -1810,14 +1805,8 @@ void BKE_displist_make_curveTypes(Depsgraph *depsgraph, dispbase = &(ob->runtime.curve_cache->disp); - do_makeDispListCurveTypes(depsgraph, - scene, - ob, - dispbase, - for_render, - for_orco, - ob_cyclic_list, - &ob->runtime.mesh_eval); + do_makeDispListCurveTypes( + depsgraph, scene, ob, dispbase, for_render, for_orco, &ob->runtime.mesh_eval); boundbox_displist_object(ob); } @@ -1827,15 +1816,13 @@ void BKE_displist_make_curveTypes_forRender(Depsgraph *depsgraph, Object *ob, ListBase *dispbase, Mesh **r_final, - const bool for_orco, - LinkNode *ob_cyclic_list) + const bool for_orco) { if (ob->runtime.curve_cache == NULL) { ob->runtime.curve_cache = MEM_callocN(sizeof(CurveCache), "CurveCache for Curve"); } - do_makeDispListCurveTypes( - depsgraph, scene, ob, dispbase, true, for_orco, ob_cyclic_list, r_final); + do_makeDispListCurveTypes(depsgraph, scene, ob, dispbase, true, for_orco, r_final); } void BKE_displist_minmax(ListBase *dispbase, float min[3], float max[3]) |