Fix critical bug in foreach ID looper of Scene data-block.

Since stone age of lib_query, the code would iterate over the current
list of active sequences (from a meta strip e.g.), and not over the
whole list of those.

This is a critical issue as it means in some cases (editing a meta strip
typically), some ID pointers would be missed/ignored by this foreach
looper, which is now at the center of most of our ID management code.

This caused a bug here at the studio, leading to loss of all sound IDs
used by sound strips when editing and undoing inside a meta strip, since
ID refcounting would not happen properly on strips using sounds outside
the meta-strip context during file reading of the undo steps.

To be backported to 2.83.

Differential Revision: https://developer.blender.org/D8671
This commit is contained in:
Bastien Montagne 2020-08-21 17:28:50 +02:00 committed by Jeroen Bakker
parent 22d8506ae5
commit a994e7a4b9
Notes: blender-bot 2023-02-14 07:18:54 +01:00
Referenced by issue #77348, Blender LTS: Maintenance Task 2.83
1 changed files with 1 additions and 1 deletions

View File

@ -644,7 +644,7 @@ static void library_foreach_ID_link(Main *bmain,
}
if (scene->ed) {
Sequence *seq;
SEQP_BEGIN (scene->ed, seq) {
SEQ_BEGIN (scene->ed, seq) {
CALLBACK_INVOKE(seq->scene, IDWALK_CB_NEVER_SELF);
CALLBACK_INVOKE(seq->scene_camera, IDWALK_CB_NOP);
CALLBACK_INVOKE(seq->clip, IDWALK_CB_USER);