[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45184] trunk/blender/source/blender: Fix crash of Refresh Sequencer when some Movie / MovieClip strips doesn' t have animation opened
Sergey Sharybin
sergey.vfx at gmail.com
Mon Mar 26 17:57:06 CEST 2012
Revision: 45184
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45184
Author: nazgul
Date: 2012-03-26 15:57:00 +0000 (Mon, 26 Mar 2012)
Log Message:
-----------
Fix crash of Refresh Sequencer when some Movie / MovieClip strips doesn't have animation opened
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/BKE_sequencer.h
trunk/blender/source/blender/blenkernel/intern/movieclip.c
trunk/blender/source/blender/blenkernel/intern/sequencer.c
trunk/blender/source/blender/blenloader/intern/writefile.c
trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
Modified: trunk/blender/source/blender/blenkernel/BKE_sequencer.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sequencer.h 2012-03-26 15:29:27 UTC (rev 45183)
+++ trunk/blender/source/blender/blenkernel/BKE_sequencer.h 2012-03-26 15:57:00 UTC (rev 45184)
@@ -348,4 +348,6 @@
extern ListBase seqbase_clipboard;
extern int seqbase_clipboard_frame;
+void seq_update_sequence_length(struct Scene *scene, struct Editing *ed, struct Sequence *seq);
+
#endif // __BKE_SEQUENCER_H__
Modified: trunk/blender/source/blender/blenkernel/intern/movieclip.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/movieclip.c 2012-03-26 15:29:27 UTC (rev 45183)
+++ trunk/blender/source/blender/blenkernel/intern/movieclip.c 2012-03-26 15:57:00 UTC (rev 45184)
@@ -213,11 +213,8 @@
return ibuf;
}
-static ImBuf *movieclip_load_movie_file(MovieClip *clip, MovieClipUser *user, int framenr, int flag)
+static void movieclip_open_anim_file(MovieClip *clip)
{
- ImBuf *ibuf = NULL;
- int tc = get_timecode(clip, flag);
- int proxy = rendersize_to_proxy(user, flag);
char str[FILE_MAX];
if (!clip->anim) {
@@ -236,7 +233,16 @@
}
}
}
+}
+static ImBuf *movieclip_load_movie_file(MovieClip *clip, MovieClipUser *user, int framenr, int flag)
+{
+ ImBuf *ibuf = NULL;
+ int tc = get_timecode(clip, flag);
+ int proxy = rendersize_to_proxy(user, flag);
+
+ movieclip_open_anim_file(clip);
+
if (clip->anim) {
int dur;
int fra;
@@ -258,8 +264,12 @@
static void movieclip_calc_length(MovieClip *clip)
{
- if (clip->anim) {
- clip->len = IMB_anim_get_duration(clip->anim, clip->proxy.tc);
+ if (clip->source == MCLIP_SRC_MOVIE) {
+ movieclip_open_anim_file(clip);
+
+ if (clip->anim) {
+ clip->len = IMB_anim_get_duration(clip->anim, clip->proxy.tc);
+ }
}
else if (clip->source == MCLIP_SRC_SEQUENCE) {
int framenr = 1;
Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c 2012-03-26 15:29:27 UTC (rev 45183)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c 2012-03-26 15:57:00 UTC (rev 45184)
@@ -4007,3 +4007,31 @@
}
}
}
+
+void seq_update_sequence_length(Scene *scene, Editing *ed, Sequence *seq)
+{
+ int changed = FALSE;
+
+ switch (seq->type) {
+ case SEQ_SCENE:
+ seq->len = seq->scene->r.efra - seq->scene->r.sfra + 1;
+ changed = TRUE;
+ break;
+ case SEQ_MOVIECLIP:
+ seq->len = BKE_movieclip_get_duration(seq->clip);
+ changed = TRUE;
+ break;
+ case SEQ_MOVIE:
+ seq_open_anim_file(seq);
+ seq->len = IMB_anim_get_duration(seq->anim, IMB_TC_RECORD_RUN);
+ changed = TRUE;
+ break;
+ }
+
+ if (changed) {
+ calc_sequence_disp(scene, seq);
+
+ if (seq_test_overlap(ed->seqbasep, seq))
+ shuffle_seq(ed->seqbasep, seq, scene);
+ }
+}
Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/writefile.c 2012-03-26 15:29:27 UTC (rev 45183)
+++ trunk/blender/source/blender/blenloader/intern/writefile.c 2012-03-26 15:57:00 UTC (rev 45184)
@@ -1863,7 +1863,7 @@
short h = prv->h[1];
unsigned int *rect = prv->rect[1];
/* don't write out large previews if not requested */
- if (!(U.flag & USER_SAVE_PREVIEWS) ) {
+ if (!(U.flag & USER_SAVE_PREVIEWS)) {
prv->w[1] = 0;
prv->h[1] = 0;
prv->rect[1] = NULL;
Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c 2012-03-26 15:29:27 UTC (rev 45183)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c 2012-03-26 15:57:00 UTC (rev 45184)
@@ -1311,29 +1311,7 @@
Sequence *seq;
SEQP_BEGIN(ed, seq) {
- int changed = FALSE;
-
- switch (seq->type) {
- case SEQ_SCENE:
- seq->len = seq->scene->r.efra - seq->scene->r.sfra + 1;
- changed = TRUE;
- break;
- case SEQ_MOVIECLIP:
- seq->len = BKE_movieclip_get_duration(seq->clip);
- changed = TRUE;
- break;
- case SEQ_MOVIE:
- seq->len = IMB_anim_get_duration(seq->anim, IMB_TC_RECORD_RUN);
- changed = TRUE;
- break;
- }
-
- if (changed) {
- calc_sequence_disp(scene, seq);
-
- if (seq_test_overlap(ed->seqbasep, seq))
- shuffle_seq(ed->seqbasep, seq, scene);
- }
+ seq_update_sequence_length(scene, ed, seq);
}
SEQ_END
}
More information about the Bf-blender-cvs
mailing list