[Bf-blender-cvs] [3fad13d] blender-v2.75-release: Fix T45016, mask animation data lost after layer rename

Antony Riakiotakis noreply at git.blender.org
Thu Jun 18 17:36:41 CEST 2015


Commit: 3fad13d5649adbe6bc5567ae27262e26aca5b2f7
Author: Antony Riakiotakis
Date:   Thu Jun 11 19:34:21 2015 +0200
Branches: blender-v2.75-release
https://developer.blender.org/rB3fad13d5649adbe6bc5567ae27262e26aca5b2f7

Fix T45016, mask animation data lost after layer rename

We need to fix up animation data.

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

M	source/blender/blenkernel/BKE_mask.h
M	source/blender/blenkernel/intern/mask.c
M	source/blender/makesrna/intern/rna_mask.c

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

diff --git a/source/blender/blenkernel/BKE_mask.h b/source/blender/blenkernel/BKE_mask.h
index 3db4d9e..2f85db4 100644
--- a/source/blender/blenkernel/BKE_mask.h
+++ b/source/blender/blenkernel/BKE_mask.h
@@ -79,6 +79,7 @@ struct MaskSpline *BKE_mask_spline_copy(struct MaskSpline *spline);
 void BKE_mask_point_free(struct MaskSplinePoint *point);
 
 void BKE_mask_layer_unique_name(struct Mask *mask, struct MaskLayer *masklay);
+void BKE_mask_layer_rename(struct Mask *mask, struct MaskLayer *masklay, char *oldname, char *newname);
 
 struct MaskLayer *BKE_mask_layer_copy(struct MaskLayer *layer);
 void BKE_mask_layer_copy_list(struct ListBase *masklayers_new, struct ListBase *masklayers);
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c
index 83ca6cd..dd179ff 100644
--- a/source/blender/blenkernel/intern/mask.c
+++ b/source/blender/blenkernel/intern/mask.c
@@ -49,6 +49,7 @@
 #include "DNA_space_types.h"
 #include "DNA_sequence_types.h"
 
+#include "BKE_animsys.h"
 #include "BKE_curve.h"
 #include "BKE_global.h"
 #include "BKE_library.h"
@@ -181,6 +182,16 @@ void BKE_mask_layer_unique_name(Mask *mask, MaskLayer *masklay)
 	               sizeof(masklay->name));
 }
 
+void BKE_mask_layer_rename(Mask *mask, MaskLayer *masklay, char *oldname, char *newname)
+{
+	BLI_strncpy(masklay->name, newname, sizeof(masklay->name));
+
+	BKE_mask_layer_unique_name(mask, masklay);
+
+	/* now fix animation paths */
+	BKE_animdata_fix_paths_rename_all(&mask->id, "layers", oldname, masklay->name);
+}
+
 MaskLayer *BKE_mask_layer_copy(MaskLayer *masklay)
 {
 	MaskLayer *masklay_new;
diff --git a/source/blender/makesrna/intern/rna_mask.c b/source/blender/makesrna/intern/rna_mask.c
index afd149a..4144872 100644
--- a/source/blender/makesrna/intern/rna_mask.c
+++ b/source/blender/makesrna/intern/rna_mask.c
@@ -213,10 +213,13 @@ static void rna_MaskLayer_name_set(PointerRNA *ptr, const char *value)
 {
 	Mask *mask = (Mask *)ptr->id.data;
 	MaskLayer *masklay = (MaskLayer *)ptr->data;
+	char oldname[sizeof(masklay->name)], newname[sizeof(masklay->name)];
 
-	BLI_strncpy(masklay->name, value, sizeof(masklay->name));
+	/* need to be on the stack */
+	BLI_strncpy(oldname, masklay->name, sizeof(masklay->name));
+	BLI_strncpy_utf8(newname, value, sizeof(masklay->name));
 
-	BKE_mask_layer_unique_name(mask, masklay);
+	BKE_mask_layer_rename(mask, masklay, oldname, newname);
 }
 
 static PointerRNA rna_MaskLayer_active_spline_get(PointerRNA *ptr)




More information about the Bf-blender-cvs mailing list