Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2010-03-30 22:10:05 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2010-03-30 22:10:05 +0400
commit0d19b4167c7369cdf760a9d94298cbd08afdb558 (patch)
treec88f912a54fb674059b13374c6cefa54551350c8 /source/blender/makesrna/intern/rna_curve.c
parentd0f8d9f38cfffaa5117930f7724bddf3d4c68d72 (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.c20
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);