[Bf-blender-cvs] [509d1328efb] greasepencil-object: Fix error duplicating object with modiifers
Antonio Vazquez
noreply at git.blender.org
Sun Jul 23 17:54:57 CEST 2017
Commit: 509d1328efbe38c148ef33a4b27a16e8ef9db3fa
Author: Antonio Vazquez
Date: Sun Jul 23 17:50:26 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rB509d1328efbe38c148ef33a4b27a16e8ef9db3fa
Fix error duplicating object with modiifers
===================================================================
M source/blender/blenkernel/BKE_gpencil.h
M source/blender/blenkernel/intern/gpencil.c
M source/blender/blenkernel/intern/object.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h
index baee7beb41c..2862979bd03 100644
--- a/source/blender/blenkernel/BKE_gpencil.h
+++ b/source/blender/blenkernel/BKE_gpencil.h
@@ -57,6 +57,7 @@ bool BKE_gpencil_free_strokes(struct bGPDframe *gpf);
bool BKE_gpencil_free_layer_temp_data(struct bGPDlayer *gpl);
void BKE_gpencil_free_frames(struct bGPDlayer *gpl);
void BKE_gpencil_free_layers(struct ListBase *list);
+void BKE_gpencil_free_derived_frames(struct bGPdata *gpd);
void BKE_gpencil_free_brushes(struct ListBase *list);
void BKE_gpencil_free_palettes(struct ListBase *list);
void BKE_gpencil_free(struct bGPdata *gpd, bool free_all);
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 44dbebcb7ee..96acde51f6f 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -258,6 +258,16 @@ static void BKE_gpencil_free_layers_temp_data(ListBase *list)
}
}
+/* Free temp gpf derived frames */
+void BKE_gpencil_free_derived_frames(bGPdata *gpd)
+{
+ /* error checking */
+ if (gpd == NULL) return;
+ for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
+ gpl->derived_gpf = NULL;
+ }
+}
+
/** Free (or release) any data used by this grease pencil (does not free the gpencil itself). */
void BKE_gpencil_free(bGPdata *gpd, bool free_all)
{
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 99774e74f0c..37594053977 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -120,6 +120,7 @@
#include "BKE_material.h"
#include "BKE_camera.h"
#include "BKE_image.h"
+#include "BKE_gpencil.h"
#include "DEG_depsgraph.h"
@@ -1216,6 +1217,8 @@ Object *BKE_object_copy_ex(Main *bmain, const Object *ob, bool copy_caches)
obn->derivedDeform = NULL;
obn->derivedFinal = NULL;
+ /* grease pencil: clean derived data */
+ BKE_gpencil_free_derived_frames(obn->gpd);
BLI_listbase_clear(&obn->gpulamp);
BLI_listbase_clear(&obn->pc_ids);
More information about the Bf-blender-cvs
mailing list