== Sequencer ==
Broad back SCENE-rendering. (Hopefully did everything right) Still missing: UI part (one can't select a scene, neither on add nor in N-keys dialog...)
This commit is contained in:
		@@ -47,6 +47,7 @@
 | 
			
		||||
#include "BKE_fcurve.h"
 | 
			
		||||
#include "BKE_utildefines.h"
 | 
			
		||||
#include "RNA_access.h"
 | 
			
		||||
#include "RE_pipeline.h"
 | 
			
		||||
 | 
			
		||||
#include "BLI_blenlib.h"
 | 
			
		||||
#include "BLI_util.h"
 | 
			
		||||
@@ -2006,14 +2007,9 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	} else if(seq->type == SEQ_SCENE) {	// scene can be NULL after deletions
 | 
			
		||||
#if 0
 | 
			
		||||
		/* XXX move entirely to render? */
 | 
			
		||||
		int oldcfra = CFRA;
 | 
			
		||||
		Sequence * oldseq = get_last_seq();
 | 
			
		||||
		Scene *sce= seq->scene, *oldsce= scene;
 | 
			
		||||
		Render *re;
 | 
			
		||||
		RenderResult rres;
 | 
			
		||||
		int doseq, rendering= G.rendering;
 | 
			
		||||
		char scenename[64];
 | 
			
		||||
		int have_seq= (sce->r.scemode & R_DOSEQ) && sce->ed && sce->ed->seqbase.first;
 | 
			
		||||
		int sce_valid =sce && (sce->camera || have_seq);
 | 
			
		||||
@@ -2035,18 +2031,24 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
 | 
			
		||||
		if (!sce_valid) {
 | 
			
		||||
			se->ok = STRIPELEM_FAILED;
 | 
			
		||||
		} else if (se->ibuf==NULL && sce_valid) {
 | 
			
		||||
			/* no need to display a waitcursor on sequencer
 | 
			
		||||
			   scene strips */
 | 
			
		||||
			if (!have_seq)
 | 
			
		||||
				waitcursor(1);
 | 
			
		||||
			
 | 
			
		||||
			int oldcfra;
 | 
			
		||||
			/* Hack! This function can be called from do_render_seq(), in that case
 | 
			
		||||
			   the seq->scene can already have a Render initialized with same name, 
 | 
			
		||||
			   so we have to use a default name. (compositor uses scene name to
 | 
			
		||||
			   find render).
 | 
			
		||||
			   However, when called from within the UI (image preview in sequencer)
 | 
			
		||||
			   we do want to use scene Render, that way the render result is defined
 | 
			
		||||
			   for display in render/imagewindow */
 | 
			
		||||
			   for display in render/imagewindow 
 | 
			
		||||
 | 
			
		||||
			   Hmm, don't see, why we can't do that all the time, 
 | 
			
		||||
			   and since G.rendering is uhm, gone... (Peter)
 | 
			
		||||
			*/
 | 
			
		||||
 | 
			
		||||
			int rendering = 1;
 | 
			
		||||
			int doseq;
 | 
			
		||||
 | 
			
		||||
			oldcfra = seq->scene->r.cfra;
 | 
			
		||||
 | 
			
		||||
			if(rendering) {
 | 
			
		||||
				BLI_strncpy(scenename, sce->id.name+2, 64);
 | 
			
		||||
				strcpy(sce->id.name+2, " do_build_seq_ibuf");
 | 
			
		||||
@@ -2057,16 +2059,9 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
 | 
			
		||||
			doseq= scene->r.scemode & R_DOSEQ;
 | 
			
		||||
			scene->r.scemode &= ~R_DOSEQ;
 | 
			
		||||
			
 | 
			
		||||
			BIF_init_render_callbacks(re, 0);	/* 0= no display callbacks */
 | 
			
		||||
			
 | 
			
		||||
			/* XXX hrms, set_scene still needed? work on that... */
 | 
			
		||||
			if(sce!=oldsce) set_scene_bg(sce);
 | 
			
		||||
			RE_BlenderFrame(re, sce,
 | 
			
		||||
					seq->sfra+se->nr+seq->anim_startofs);
 | 
			
		||||
			if(sce!=oldsce) set_scene_bg(oldsce);
 | 
			
		||||
			
 | 
			
		||||
			/* UGLY WARNING, it is set to zero in  RE_BlenderFrame */
 | 
			
		||||
			G.rendering= rendering;
 | 
			
		||||
			if(rendering)
 | 
			
		||||
				BLI_strncpy(sce->id.name+2, scenename, 64);
 | 
			
		||||
			
 | 
			
		||||
@@ -2086,20 +2081,12 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
 | 
			
		||||
 | 
			
		||||
			RE_ReleaseResultImage(re);
 | 
			
		||||
			
 | 
			
		||||
			BIF_end_render_callbacks();
 | 
			
		||||
			// BIF_end_render_callbacks();
 | 
			
		||||
			
 | 
			
		||||
			/* restore */
 | 
			
		||||
			scene->r.scemode |= doseq;
 | 
			
		||||
		
 | 
			
		||||
			// XXX
 | 
			
		||||
#if 0
 | 
			
		||||
			if((G.f & G_PLAYANIM)==0 /* bad, is set on do_render_seq */
 | 
			
		||||
			   && !have_seq
 | 
			
		||||
			   && !build_proxy_run) 
 | 
			
		||||
#endif
 | 
			
		||||
			
 | 
			
		||||
			CFRA = oldcfra;
 | 
			
		||||
			set_last_seq(oldseq);
 | 
			
		||||
			seq->scene->r.cfra = oldcfra;
 | 
			
		||||
 | 
			
		||||
			copy_to_ibuf_still(seq, se);
 | 
			
		||||
 | 
			
		||||
@@ -2112,7 +2099,6 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
#endif
 | 
			
		||||
	}
 | 
			
		||||
	if (!build_proxy_run) {
 | 
			
		||||
		if (se->ibuf && use_limiter) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user