[Bf-blender-cvs] [d68e0cee1d7] temp-T78835: Sequencer: Add session UUID check function

Sergey Sharybin noreply at git.blender.org
Thu Jul 30 15:44:36 CEST 2020


Commit: d68e0cee1d7e0ec60bf71ea2a2246bb3c97a3582
Author: Sergey Sharybin
Date:   Thu Jul 30 12:23:37 2020 +0200
Branches: temp-T78835
https://developer.blender.org/rBd68e0cee1d7e0ec60bf71ea2a2246bb3c97a3582

Sequencer: Add session UUID check function

Is aimed for use during development and debug, to help
verifying that operations do not leave sequences with
invalid UUIDs.

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

M	source/blender/blenkernel/BKE_sequencer.h
M	source/blender/blenkernel/intern/sequencer.c

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

diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h
index 6997ea94786..60a0bee801d 100644
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@ -629,6 +629,10 @@ 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);
 
+/* 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 --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 8110c350108..56cd1793484 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -6084,3 +6084,32 @@ bool BKE_sequencer_render_loop_check(Sequence *seq_main, Sequence *seq)
 
   return false;
 }
+
+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);
+}



More information about the Bf-blender-cvs mailing list