Depsgraph: Tag sequencer for update on changes
Currently only adding, removing and transforming strips. Most likely more tags is needed.
This commit is contained in:
@@ -215,6 +215,9 @@ void depsgraph_tag_to_component_opcode(const ID *id,
|
||||
/* There is no such node in depsgraph, this tag is to be handled
|
||||
* separately. */
|
||||
break;
|
||||
case ID_RECALC_SEQUENCER:
|
||||
*component_type = NodeType::SEQUENCER;
|
||||
break;
|
||||
case ID_RECALC_ALL:
|
||||
case ID_RECALC_PSYS_ALL:
|
||||
BLI_assert(!"Should not happen");
|
||||
@@ -615,6 +618,8 @@ const char *DEG_update_tag_as_string(IDRecalcFlag flag)
|
||||
return "POINT_CACHE";
|
||||
case ID_RECALC_EDITORS:
|
||||
return "EDITORS";
|
||||
case ID_RECALC_SEQUENCER:
|
||||
return "SEQUENCER";
|
||||
case ID_RECALC_ALL:
|
||||
return "ALL";
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ set(INC
|
||||
../../blenlib
|
||||
../../blentranslation
|
||||
../../gpu
|
||||
../../depsgraph
|
||||
../../imbuf
|
||||
../../makesdna
|
||||
../../makesrna
|
||||
|
||||
@@ -64,6 +64,8 @@
|
||||
# include <AUD_Sequence.h>
|
||||
#endif
|
||||
|
||||
#include "DEG_depsgraph.h"
|
||||
|
||||
/* own include */
|
||||
#include "sequencer_intern.h"
|
||||
|
||||
@@ -355,6 +357,7 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op)
|
||||
sequencer_add_apply_replace_sel(C, op, seq);
|
||||
sequencer_add_apply_overlap(C, op, seq);
|
||||
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER);
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
@@ -441,6 +444,7 @@ static int sequencer_add_movieclip_strip_exec(bContext *C, wmOperator *op)
|
||||
sequencer_add_apply_replace_sel(C, op, seq);
|
||||
sequencer_add_apply_overlap(C, op, seq);
|
||||
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER);
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
@@ -527,6 +531,7 @@ static int sequencer_add_mask_strip_exec(bContext *C, wmOperator *op)
|
||||
sequencer_add_apply_replace_sel(C, op, seq);
|
||||
sequencer_add_apply_overlap(C, op, seq);
|
||||
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER);
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
@@ -641,6 +646,7 @@ static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoad
|
||||
BKE_sequencer_sort(scene);
|
||||
BKE_sequencer_update_muting(ed);
|
||||
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER);
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
@@ -968,6 +974,7 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op)
|
||||
MEM_freeN(op->customdata);
|
||||
}
|
||||
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER);
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
@@ -1123,6 +1130,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
|
||||
* it was NOT called in blender 2.4x, but wont hurt */
|
||||
BKE_sequencer_sort(scene);
|
||||
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER);
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
||||
@@ -64,6 +64,8 @@
|
||||
#include "UI_view2d.h"
|
||||
#include "UI_interface.h"
|
||||
|
||||
#include "DEG_depsgraph.h"
|
||||
|
||||
/* own include */
|
||||
#include "sequencer_intern.h"
|
||||
|
||||
@@ -2379,6 +2381,7 @@ static int sequencer_delete_exec(bContext *C, wmOperator *UNUSED(op))
|
||||
ms = ms->prev;
|
||||
}
|
||||
|
||||
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER);
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
||||
@@ -1121,6 +1121,8 @@ static void recalcData_sequencer(TransInfo *t)
|
||||
seq_prev = seq;
|
||||
}
|
||||
|
||||
DEG_id_tag_update(&t->scene->id, ID_RECALC_SEQUENCER);
|
||||
|
||||
flushTransSeq(t);
|
||||
}
|
||||
|
||||
|
||||
@@ -604,6 +604,10 @@ typedef enum IDRecalcFlag {
|
||||
*/
|
||||
ID_RECALC_COPY_ON_WRITE = (1 << 13),
|
||||
|
||||
/* Sequences in the sequencer did change.
|
||||
* Use this tag with a scene ID which owns the sequences. */
|
||||
ID_RECALC_SEQUENCER = (1 << 14),
|
||||
|
||||
/***************************************************************************
|
||||
* Pseudonyms, to have more semantic meaning in the actual code without
|
||||
* using too much low-level and implementation specific tags. */
|
||||
|
||||
Reference in New Issue
Block a user