diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2010-03-30 22:10:05 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2010-03-30 22:10:05 +0400 |
commit | 0d19b4167c7369cdf760a9d94298cbd08afdb558 (patch) | |
tree | c88f912a54fb674059b13374c6cefa54551350c8 /source/blender/makesrna/intern/rna_curve.c | |
parent | d0f8d9f38cfffaa5117930f7724bddf3d4c68d72 (diff) |
- Call DAG_id_flush_update for each object in convert operator if keep_original
option is switched off. This fixes trouble when user converts curve which is
set as taper/bevel object to mesh (scene kept unchanged until object
recalculation).
- Moved checking of taper/bevel objects type to RNA property update handlers.
- Added resetting taper/bevel object in do_makeDispListCurveTypes it this
objects aren't curves.
Diffstat (limited to 'source/blender/makesrna/intern/rna_curve.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_curve.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c index dbea28c31f6..57d6194b92e 100644 --- a/source/blender/makesrna/intern/rna_curve.c +++ b/source/blender/makesrna/intern/rna_curve.c @@ -219,10 +219,14 @@ static void rna_Curve_update_deps(Main *bmain, Scene *scene, PointerRNA *ptr) static void rna_Curve_update_taper(Main *bmain, Scene *scene, PointerRNA *ptr) { Curve *cu= (Curve*)ptr->id.data; - Object *obj= cu->taperobj; + Object *ob= cu->taperobj; - if (obj && obj->type != OB_CURVE) { - cu->taperobj = NULL; + if (ob) { + /* if taper object has got the save curve, as object, for which it's */ + /* set as taperobj, there could be infinity loop in displist calculation */ + if (ob->type != OB_CURVE || ob->data == cu) { + cu->taperobj = NULL; + } } rna_Curve_update_deps(bmain, scene, ptr); @@ -231,10 +235,14 @@ static void rna_Curve_update_taper(Main *bmain, Scene *scene, PointerRNA *ptr) static void rna_Curve_update_bevel(Main *bmain, Scene *scene, PointerRNA *ptr) { Curve *cu= (Curve*)ptr->id.data; - Object *obj= cu->bevobj; + Object *ob= cu->bevobj; - if (obj && obj->type != OB_CURVE) { - cu->bevobj = NULL; + if (ob) { + /* if bevel object has got the save curve, as object, for which it's */ + /* set as bevobj, there could be infinity loop in displist calculation */ + if (ob->type != OB_CURVE || ob->data == cu) { + cu->bevobj = NULL; + } } rna_Curve_update_deps(bmain, scene, ptr); |