== Sequencer ==

This fixes:
[#11745] Blender crashes when changing Scenes on Sequencer`s Strips

containing:

- last_seq was set to null by scene-render
- button handling wasn't very robust (didn't check for null)
- REDRAWBUTSSCENE was missing
This commit is contained in:
Peter Schlaile 2008-05-20 21:30:16 +00:00
parent 92c9ae280c
commit 38ffd41bf0
2 changed files with 7 additions and 0 deletions

@ -1286,6 +1286,10 @@ void do_sequencer_panels(unsigned short event)
Sequence *last_seq = get_last_seq(); Sequence *last_seq = get_last_seq();
ScrArea * sa; ScrArea * sa;
if (!last_seq) {
return;
}
switch(event) { switch(event) {
case B_SEQ_BUT_PLUGIN: case B_SEQ_BUT_PLUGIN:
case B_SEQ_BUT_EFFECT: case B_SEQ_BUT_EFFECT:
@ -1323,6 +1327,7 @@ void do_sequencer_panels(unsigned short event)
allqueue(REDRAWALL, 0); allqueue(REDRAWALL, 0);
} else { } else {
allqueue(REDRAWSEQ, 0); allqueue(REDRAWSEQ, 0);
allqueue(REDRAWBUTSSCENE, 0);
} }
} }

@ -1756,6 +1756,7 @@ static void do_build_seq_ibuf(Sequence * seq, TStripElem *se, int cfra,
} }
} else if(seq->type == SEQ_SCENE) { // scene can be NULL after deletions } else if(seq->type == SEQ_SCENE) { // scene can be NULL after deletions
int oldcfra = CFRA; int oldcfra = CFRA;
Sequence * oldseq = get_last_seq();
Scene *sce= seq->scene, *oldsce= G.scene; Scene *sce= seq->scene, *oldsce= G.scene;
Render *re; Render *re;
RenderResult rres; RenderResult rres;
@ -1834,6 +1835,7 @@ static void do_build_seq_ibuf(Sequence * seq, TStripElem *se, int cfra,
if((G.f & G_PLAYANIM)==0) /* bad, is set on do_render_seq */ if((G.f & G_PLAYANIM)==0) /* bad, is set on do_render_seq */
waitcursor(0); waitcursor(0);
CFRA = oldcfra; CFRA = oldcfra;
set_last_seq(oldseq);
copy_to_ibuf_still(seq, se); copy_to_ibuf_still(seq, se);