[Bf-blender-cvs] [ee09d2c1271] temp-gpencil-eval: Keep orig pointer references updated

Antonio Vazquez noreply at git.blender.org
Tue Jan 14 13:51:13 CET 2020


Commit: ee09d2c1271a46120acff5bbe1a310775edb0262
Author: Antonio Vazquez
Date:   Tue Jan 14 13:51:07 2020 +0100
Branches: temp-gpencil-eval
https://developer.blender.org/rBee09d2c1271a46120acff5bbe1a310775edb0262

Keep orig pointer references updated

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

M	source/blender/blenkernel/BKE_gpencil.h
M	source/blender/blenkernel/intern/gpencil.c
M	source/blender/blenkernel/intern/gpencil_modifier.c

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

diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h
index ef46087e332..ed505f0bb8d 100644
--- a/source/blender/blenkernel/BKE_gpencil.h
+++ b/source/blender/blenkernel/BKE_gpencil.h
@@ -325,7 +325,8 @@ extern void (*BKE_gpencil_batch_cache_free_cb)(struct bGPdata *gpd);
 #ifdef __cplusplus
 extern "C" {
 #endif
-
+void BKE_gpencil_update_frame_reference_pointers(const struct bGPDframe *gpf_orig,
+                                                 const struct bGPDframe *gpf_eval);
 void BKE_gpencil_update_orig_pointers(const struct Object *ob_orig, const struct Object *ob_eval);
 void BKE_gpencil_prepare_filling_data(const struct Object *ob);
 
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 1e88fec50da..6fbbecb7274 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -3859,8 +3859,8 @@ void BKE_gpencil_prepare_filling_data(const Object *ob)
   }
 }
 
-static void gpencil_update_frame_reference_pointers(const struct bGPDframe *gpf_orig,
-                                                    const struct bGPDframe *gpf_eval)
+void BKE_gpencil_update_frame_reference_pointers(const struct bGPDframe *gpf_orig,
+                                                 const struct bGPDframe *gpf_eval)
 {
   int stroke_idx = -1;
   for (bGPDstroke *gps_orig = gpf_orig->strokes.first; gps_orig; gps_orig = gps_orig->next) {
@@ -3910,7 +3910,7 @@ void BKE_gpencil_update_orig_pointers(const Object *ob_orig, const Object *ob_ev
         continue;
       }
       /* Update frame reference pointers. */
-      gpencil_update_frame_reference_pointers(gpf_orig, gpf_eval);
+      BKE_gpencil_update_frame_reference_pointers(gpf_orig, gpf_eval);
     }
   }
 }
diff --git a/source/blender/blenkernel/intern/gpencil_modifier.c b/source/blender/blenkernel/intern/gpencil_modifier.c
index 27eafec7ec1..1d39d7f508d 100644
--- a/source/blender/blenkernel/intern/gpencil_modifier.c
+++ b/source/blender/blenkernel/intern/gpencil_modifier.c
@@ -862,12 +862,11 @@ static void gpencil_assign_object_eval(Object *object)
 
 void BKE_gpencil_prepare_eval_data(Depsgraph *depsgraph, Scene *scene, Object *ob)
 {
-  Object *ob_orig = (Object *)DEG_get_original_id(&ob->id);
-
   if (ob->greasepencil_modifiers.first == NULL) {
     return;
   }
 
+  Object *ob_orig = (Object *)DEG_get_original_id(&ob->id);
   bGPdata *gpd_eval = (bGPdata *)ob->data;
   DEG_debug_print_eval(depsgraph, __func__, gpd_eval->id.name, gpd_eval);
 
@@ -884,12 +883,13 @@ void BKE_gpencil_prepare_eval_data(Depsgraph *depsgraph, Scene *scene, Object *o
 
     ob->runtime.gpd_eval = BKE_gpencil_copy_for_eval(ob->runtime.gpd_orig, true);
     gpencil_assign_object_eval(ob);
+    BKE_gpencil_update_orig_pointers((Object *)ob_orig, (Object *)ob);
   }
   else {
     /* Replace only active frame. */
     if (DEG_is_active(depsgraph)) {
 
-      bGPdata *gpd_orig = (bGPdata *)ob_orig->data;
+      bGPdata *gpd_orig = ob->runtime.gpd_orig;
       bGPdata *gpd_eval = ob->runtime.gpd_eval;
       ob->data = ob->runtime.gpd_eval;
 
@@ -916,6 +916,7 @@ void BKE_gpencil_prepare_eval_data(Depsgraph *depsgraph, Scene *scene, Object *o
           BKE_gpencil_free_strokes(gpf_eval);
           /* Copy again strokes. */
           BKE_gpencil_frame_copy_strokes(gpf_orig, gpf_eval);
+          BKE_gpencil_update_frame_reference_pointers(gpf_orig, gpf_eval);
         }
       }
     }



More information about the Bf-blender-cvs mailing list