[Bf-blender-cvs] [db24e289b25] master: Merge branch 'blender-v2.90-release'

Sergey Sharybin noreply at git.blender.org
Fri Jul 31 11:55:07 CEST 2020


Commit: db24e289b25e6110265110aa4bf3009541e9fae9
Author: Sergey Sharybin
Date:   Fri Jul 31 11:53:22 2020 +0200
Branches: master
https://developer.blender.org/rBdb24e289b25e6110265110aa4bf3009541e9fae9

Merge branch 'blender-v2.90-release'

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



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

diff --cc source/blender/blenkernel/BKE_sequencer.h
index 2873a13d1f7,60a0bee801d..fd6885440fa
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@@ -625,11 -628,11 +628,15 @@@ void BKE_sequencer_color_balance_apply(
  void BKE_sequencer_all_free_anim_ibufs(struct Scene *scene, int cfra);
  bool BKE_sequencer_check_scene_recursion(struct Scene *scene, struct ReportList *reports);
  bool BKE_sequencer_render_loop_check(struct Sequence *seq_main, struct Sequence *seq);
 +void BKE_sequencer_flag_for_removal(struct Scene *scene,
 +                                    struct ListBase *seqbase,
 +                                    struct Sequence *seq);
 +void BKE_sequencer_remove_flagged_sequences(struct Scene *scene, struct ListBase *seqbase);
  
+ /* A debug and development function which checks whether sequences have unique UUIDs.
+  * Errors will be reported to the console. */
+ void BKE_sequencer_check_uuids_unique_and_report(const struct Scene *scene);
+ 
  #ifdef __cplusplus
  }
  #endif
diff --cc source/blender/blenkernel/intern/sequencer.c
index b16fc08a4af,1be330ee2ef..fbd6d970e5f
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@@ -6070,60 -6082,31 +6082,89 @@@ bool BKE_sequencer_render_loop_check(Se
    return false;
  }
  
 +static void sequencer_flag_users_for_removal(Scene *scene, ListBase *seqbase, Sequence *seq)
 +{
 +  LISTBASE_FOREACH (Sequence *, user_seq, seqbase) {
 +    /* Look in metas for usage of seq. */
 +    if (user_seq->type == SEQ_TYPE_META) {
 +      sequencer_flag_users_for_removal(scene, &user_seq->seqbase, seq);
 +    }
 +
 +    /* Clear seq from modifiers. */
 +    SequenceModifierData *smd;
 +    for (smd = user_seq->modifiers.first; smd; smd = smd->next) {
 +      if (smd->mask_sequence == seq) {
 +        smd->mask_sequence = NULL;
 +      }
 +    }
 +
 +    /* Remove effects, that use seq. */
 +    if ((user_seq->seq1 && user_seq->seq1 == seq) || (user_seq->seq2 && user_seq->seq2 == seq) ||
 +        (user_seq->seq3 && user_seq->seq3 == seq)) {
 +      user_seq->flag |= SEQ_FLAG_DELETE;
 +      /* Strips can be used as mask even if not in same seqbase. */
 +      sequencer_flag_users_for_removal(scene, &scene->ed->seqbase, user_seq);
 +    }
 +  }
 +}
 +
 +/* Flag seq and its users (effects) for removal. */
 +void BKE_sequencer_flag_for_removal(Scene *scene, ListBase *seqbase, Sequence *seq)
 +{
 +  if (seq == NULL || (seq->flag & SEQ_FLAG_DELETE) != 0) {
 +    return;
 +  }
 +
 +  /* Flag and remove meta children. */
 +  if (seq->type == SEQ_TYPE_META) {
 +    LISTBASE_FOREACH (Sequence *, meta_child, &seq->seqbase) {
 +      BKE_sequencer_flag_for_removal(scene, &seq->seqbase, meta_child);
 +    }
 +  }
 +
 +  seq->flag |= SEQ_FLAG_DELETE;
 +  sequencer_flag_users_for_removal(scene, seqbase, seq);
 +}
 +
 +/* Remove all flagged sequences, return true if sequence is removed. */
 +void BKE_sequencer_remove_flagged_sequences(Scene *scene, ListBase *seqbase)
 +{
 +  LISTBASE_FOREACH_MUTABLE (Sequence *, seq, seqbase) {
 +    if (seq->flag & SEQ_FLAG_DELETE) {
 +      if (seq->type == SEQ_TYPE_META) {
 +        BKE_sequencer_remove_flagged_sequences(scene, &seq->seqbase);
 +      }
 +      BLI_remlink(seqbase, seq);
 +      BKE_sequence_free(scene, seq, true);
 +    }
 +  }
 +}
++
+ void BKE_sequencer_check_uuids_unique_and_report(const Scene *scene)
+ {
+   if (scene->ed == NULL) {
+     return;
+   }
+ 
+   struct GSet *used_uuids = BLI_gset_new(
+       BLI_session_uuid_ghash_hash, BLI_session_uuid_ghash_compare, "sequencer used uuids");
+ 
+   const Sequence *sequence;
+   SEQ_BEGIN (scene->ed, sequence) {
+     const SessionUUID *session_uuid = &sequence->runtime.session_uuid;
+     if (!BLI_session_uuid_is_generated(session_uuid)) {
+       printf("Sequence %s does not have UUID generated.\n", sequence->name);
+       continue;
+     }
+ 
+     if (BLI_gset_lookup(used_uuids, session_uuid) != NULL) {
+       printf("Sequence %s has duplicate UUID generated.\n", sequence->name);
+       continue;
+     }
+ 
+     BLI_gset_insert(used_uuids, (void *)session_uuid);
+   }
+   SEQ_END;
+ 
+   BLI_gset_free(used_uuids, NULL);
+ }
diff --cc source/blender/makesdna/intern/makesdna.c
index 48258f39604,9d2fecb123b..826fc53dce4
--- a/source/blender/makesdna/intern/makesdna.c
+++ b/source/blender/makesdna/intern/makesdna.c
@@@ -1530,23 -1531,15 +1531,24 @@@ int main(int argc, char **argv
  
  #endif /* if 0 */
  
 -/* even though DNA supports, 'long' shouldn't be used since it can be either 32 or 64bit,
 - * use int or int64_t instead.
 +/**
 + * Disable types:
 + *
 + * - 'long': even though DNA supports, 'long' shouldn't be used since it can be either 32 or 64bit,
 + *   use int, int32_t or int64_t instead.
 + * - 'int8_t': as DNA doesn't yet support 'signed char' types,
 + *   all char types are assumed to be unsigned.
 + *   We should be able to support this, it's just not something which has been added yet.
 + *
   * Only valid use would be as a runtime variable if an API expected a long,
 - * but so far we dont have this happening. */
 + * but so far we don't have this happening.
 + */
  #ifdef __GNUC__
  #  pragma GCC poison long
 +#  pragma GCC poison int8_t
  #endif
  
+ #include "DNA_session_uuid_types.h"
  #include "DNA_ID.h"
  #include "DNA_action_types.h"
  #include "DNA_anim_types.h"
diff --cc tests/gtests/blenlib/CMakeLists.txt
index 0727d317eaa,937279bceb9..bb0a5b63f71
--- a/tests/gtests/blenlib/CMakeLists.txt
+++ b/tests/gtests/blenlib/CMakeLists.txt
@@@ -57,10 -65,16 +57,11 @@@ BLENDER_TEST(BLI_math_geom "bf_blenlib"
  BLENDER_TEST(BLI_math_matrix "bf_blenlib")
  BLENDER_TEST(BLI_math_vector "bf_blenlib")
  BLENDER_TEST(BLI_memiter "bf_blenlib")
 -BLENDER_TEST(BLI_memory_utils "bf_blenlib")
  BLENDER_TEST(BLI_path_util "${BLI_path_util_extra_libs}")
  BLENDER_TEST(BLI_polyfill_2d "bf_blenlib")
+ BLENDER_TEST(BLI_session_uuid "bf_blenlib")
 -BLENDER_TEST(BLI_set "bf_blenlib")
 -BLENDER_TEST(BLI_span "bf_blenlib")
  BLENDER_TEST(BLI_stack "bf_blenlib")
 -BLENDER_TEST(BLI_stack_cxx "bf_blenlib")
  BLENDER_TEST(BLI_string "bf_blenlib")
 -BLENDER_TEST(BLI_string_ref "bf_blenlib")
  BLENDER_TEST(BLI_string_utf8 "bf_blenlib")
  BLENDER_TEST(BLI_task "bf_blenlib;bf_intern_numaapi")
  BLENDER_TEST(BLI_task_graph "bf_blenlib;bf_intern_numaapi")



More information about the Bf-blender-cvs mailing list