[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52044] trunk/blender/source/blender: Sequencer: disabled sequencer recursion and corrected rendered preview mode

Sergey Sharybin sergey.vfx at gmail.com
Fri Nov 9 17:49:19 CET 2012


Revision: 52044
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52044
Author:   nazgul
Date:     2012-11-09 16:49:17 +0000 (Fri, 09 Nov 2012)
Log Message:
-----------
Sequencer: disabled sequencer recursion and corrected rendered preview mode

Sequencer recursion was never actually supported and only gives lots of
issues. Disabled it now, so users are not getting confused by semi-working
stuff.

Also made a correction to rendered sequencer preview, so now using scene
strip in it's own sequencer will work properly (it produced black frames
before).

This required killing compositor jobs since they could be using the same
render result as renderer called from sequencer uses.

Small improvements could be:
- Add slight delay before compositor job starts handling nodes so killing
  this job would be fast
- Tag compositor to be updated after preview was fully rendered.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/sequencer.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2012-11-09 16:15:00 UTC (rev 52043)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2012-11-09 16:49:17 UTC (rev 52044)
@@ -2344,6 +2344,7 @@
 	int do_seq;
 	int have_seq = FALSE;
 	Scene *scene;
+	int is_thread_main = BLI_thread_is_main();
 
 	/* don't refer to seq->scene above this point!, it can be NULL */
 	if (seq->scene == NULL) {
@@ -2373,7 +2374,7 @@
 
 	/* prevent eternal loop */
 	do_seq = context.scene->r.scemode & R_DOSEQ;
-	context.scene->r.scemode &= ~R_DOSEQ;
+	scene->r.scemode &= ~R_DOSEQ;
 	
 #ifdef DURIAN_CAMERA_SWITCH
 	/* stooping to new low's in hackyness :( */
@@ -2383,9 +2384,7 @@
 	(void)oldmarkers;
 #endif
 
-	if ((sequencer_view3d_cb && do_seq_gl && camera) &&
-	    (BLI_thread_is_main() == TRUE) &&
-	    ((have_seq == FALSE) || (scene == context.scene)))
+	if ((sequencer_view3d_cb && do_seq_gl && camera) && is_thread_main)
 	{
 		char err_out[256] = "unknown";
 		/* for old scened this can be uninitialized,
@@ -2405,8 +2404,12 @@
 		Render *re = RE_GetRender(scene->id.name);
 		RenderResult rres;
 
-		/* XXX: this if can be removed when sequence preview rendering uses the job system */
-		if (is_rendering || context.scene != scene) {
+		/* XXX: this if can be removed when sequence preview rendering uses the job system
+		 *
+		 * disable rendered preview for sequencer while rendering -- it's very much possible
+		 * that preview render will went into conflict with final render
+		 */
+		if (!is_thread_main || is_rendering == FALSE) {
 			if (re == NULL)
 				re = RE_NewRender(scene->id.name);
 			
@@ -2440,7 +2443,7 @@
 	}
 	
 	/* restore */
-	context.scene->r.scemode |= do_seq;
+	scene->r.scemode |= do_seq;
 	
 	scene->r.cfra = oldcfra;
 

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c	2012-11-09 16:15:00 UTC (rev 52043)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c	2012-11-09 16:49:17 UTC (rev 52044)
@@ -913,6 +913,13 @@
 	unsigned char *display_buffer;
 	void *cache_handle = NULL;
 
+	if (G.is_rendering == FALSE) {
+		/* stop all running jobs, except screen one. currently previews frustrate Render
+		 * needed to make so sequencer's rendering doesn't conflict with compositor
+		 */
+		WM_jobs_kill_all_except(CTX_wm_manager(C), CTX_wm_screen(C));
+	}
+
 	render_size = sseq->render_size;
 	if (render_size == 0) {
 		render_size = scene->r.size;




More information about the Bf-blender-cvs mailing list