diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-07-24 10:51:04 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-07-24 10:51:04 +0400 |
commit | 576161b18673ef5cd5833330d4bfbf1266c3f624 (patch) | |
tree | 4448532c0b4b8aac30cac9d0de0d29e821df4dce /source/blender/blenkernel/BKE_sequencer.h | |
parent | d0f225393cc4c65c1e2e9c2003f3a07eb18db28f (diff) |
fix [#36262] Paste strip with video or sound content from another file crashes Blender
existing code was very stupid.
- all ID pointers for clipboard strips are handled uniformly.
- clipboard stores a duplicate ID pointer which are restored on paste.
- restoring pointers...
-- use ID's that are still in the database (copy&paste within the same file).
-- fallback to name lookup.
-- fallback to loading them from the original filepath (movie-clip and sound only).
also fix bug pasting where initialing the sound wasn't done if there was no frame-offset.
Diffstat (limited to 'source/blender/blenkernel/BKE_sequencer.h')
-rw-r--r-- | source/blender/blenkernel/BKE_sequencer.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 4494d127082..749b04d7328 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -208,6 +208,10 @@ int BKE_sequencer_recursive_apply(struct Sequence *seq, int (*apply_func)(struct void BKE_sequencer_free_clipboard(void); +void BKE_sequence_clipboard_pointers_free(struct Sequence *seq); +void BKE_sequence_clipboard_pointers_store(struct Sequence *seq); +void BKE_sequence_clipboard_pointers_restore(struct Sequence *seq, struct Main *bmain); + void BKE_sequence_free(struct Scene *scene, struct Sequence *seq); const char *BKE_sequence_give_name(struct Sequence *seq); void BKE_sequence_calc(struct Scene *scene, struct Sequence *seq); @@ -319,8 +323,6 @@ void BKE_sequence_base_dupli_recursive(struct Scene *scene, struct Scene *scene_ bool BKE_sequence_is_valid_check(struct Sequence *seq); void BKE_sequencer_clear_scene_in_allseqs(struct Main *bmain, struct Scene *sce); -void BKE_sequencer_clear_movieclip_in_clipboard(struct MovieClip *clip); -void BKE_sequencer_clear_mask_in_clipboard(struct Mask *mask); struct Sequence *BKE_sequence_get_by_name(struct ListBase *seqbase, const char *name, int recursive); |