[Bf-blender-cvs] [43a582a2abf] master: Sequencer: skip redundant F-curve GSet allocation

Campbell Barton noreply at git.blender.org
Tue Apr 5 01:32:06 CEST 2022


Commit: 43a582a2abff46c295711a88349a9222e12b89a6
Author: Campbell Barton
Date:   Tue Apr 5 09:30:26 2022 +1000
Branches: master
https://developer.blender.org/rB43a582a2abff46c295711a88349a9222e12b89a6

Sequencer: skip redundant F-curve GSet allocation

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

M	source/blender/editors/space_sequencer/sequencer_edit.c
M	source/blender/sequencer/intern/animation.c

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

diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index b77f780e413..70fba9d4ac9 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -2457,6 +2457,9 @@ static void sequencer_copy_animation(Scene *scene, Sequence *seq)
   }
 
   GSet *fcurves = SEQ_fcurves_by_strip_get(seq, &scene->adt->action->curves);
+  if (fcurves == NULL) {
+    return;
+  }
 
   GSET_FOREACH_BEGIN (FCurve *, fcu, fcurves) {
     BLI_addtail(&fcurves_clipboard, BKE_fcurve_copy(fcu));
diff --git a/source/blender/sequencer/intern/animation.c b/source/blender/sequencer/intern/animation.c
index a908bb01d35..82dc5970a7f 100644
--- a/source/blender/sequencer/intern/animation.c
+++ b/source/blender/sequencer/intern/animation.c
@@ -48,9 +48,13 @@ GSet *SEQ_fcurves_by_strip_get(const Sequence *seq, ListBase *fcurve_base)
   char rna_path[SEQ_RNAPATH_MAXSTR];
   size_t rna_path_len = sequencer_rna_path_prefix(rna_path, seq->name + 2);
 
-  GSet *fcurves = BLI_gset_ptr_new(__func__);
+  /* Only allocate `fcurves` if it's needed as it's possible there is no animation for `seq`. */
+  GSet *fcurves = NULL;
   LISTBASE_FOREACH (FCurve *, fcurve, fcurve_base) {
     if (STREQLEN(fcurve->rna_path, rna_path, rna_path_len)) {
+      if (fcurves == NULL) {
+        fcurves = BLI_gset_ptr_new(__func__);
+      }
       BLI_gset_add(fcurves, fcurve);
     }
   }
@@ -65,8 +69,11 @@ void SEQ_offset_animdata(Scene *scene, Sequence *seq, int ofs)
   if (!seq_animation_curves_exist(scene) || ofs == 0) {
     return;
   }
-
   GSet *fcurves = SEQ_fcurves_by_strip_get(seq, &scene->adt->action->curves);
+  if (fcurves == NULL) {
+    return;
+  }
+
   GSET_FOREACH_BEGIN (FCurve *, fcu, fcurves) {
     unsigned int i;
     if (fcu->bezt) {
@@ -95,8 +102,11 @@ void SEQ_free_animdata(Scene *scene, Sequence *seq)
   if (!seq_animation_curves_exist(scene)) {
     return;
   }
-
   GSet *fcurves = SEQ_fcurves_by_strip_get(seq, &scene->adt->action->curves);
+  if (fcurves == NULL) {
+    return;
+  }
+
   GSET_FOREACH_BEGIN (FCurve *, fcu, fcurves) {
     BLI_remlink(&scene->adt->action->curves, fcu);
     BKE_fcurve_free(fcu);
@@ -129,8 +139,11 @@ void SEQ_animation_duplicate(Scene *scene, Sequence *seq, ListBase *list)
   if (BLI_listbase_is_empty(list)) {
     return;
   }
-
   GSet *fcurves = SEQ_fcurves_by_strip_get(seq, list);
+  if (fcurves == NULL) {
+    return;
+  }
+
   GSET_FOREACH_BEGIN (FCurve *, fcu, fcurves) {
     FCurve *fcu_cpy = BKE_fcurve_copy(fcu);
     BLI_addtail(&scene->adt->action->curves, fcu_cpy);



More information about the Bf-blender-cvs mailing list