[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28160] branches/render25/source/blender: Render Branch: disable drawing of spaces other than the image editor

Brecht Van Lommel brecht at blender.org
Tue Apr 13 13:36:25 CEST 2010


Revision: 28160
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28160
Author:   blendix
Date:     2010-04-13 13:36:25 +0200 (Tue, 13 Apr 2010)

Log Message:
-----------
Render Branch: disable drawing of spaces other than the image editor
and info header while rendering. This should be fixed properly, but
for Durian stability is more important now. Also disabled updating
statistic while rendering, the render info also shows it's own stats
anyway.

Added an endjob callback for jobs, which accounts for most of the files
changed.

Modified Paths:
--------------
    branches/render25/source/blender/editors/object/object_bake.c
    branches/render25/source/blender/editors/physics/physics_fluid.c
    branches/render25/source/blender/editors/render/render_internal.c
    branches/render25/source/blender/editors/render/render_preview.c
    branches/render25/source/blender/editors/screen/area.c
    branches/render25/source/blender/editors/screen/screendump.c
    branches/render25/source/blender/editors/space_buttons/space_buttons.c
    branches/render25/source/blender/editors/space_file/filelist.c
    branches/render25/source/blender/editors/space_info/info_stats.c
    branches/render25/source/blender/editors/space_node/node_edit.c
    branches/render25/source/blender/windowmanager/WM_api.h
    branches/render25/source/blender/windowmanager/intern/wm_event_system.c
    branches/render25/source/blender/windowmanager/intern/wm_jobs.c

Modified: branches/render25/source/blender/editors/object/object_bake.c
===================================================================
--- branches/render25/source/blender/editors/object/object_bake.c	2010-04-13 09:23:19 UTC (rev 28159)
+++ branches/render25/source/blender/editors/object/object_bake.c	2010-04-13 11:36:25 UTC (rev 28160)
@@ -263,7 +263,7 @@
 		steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, WM_JOB_EXCL_RENDER|WM_JOB_PRIORITY);
 		WM_jobs_customdata(steve, bkr, bake_freejob);
 		WM_jobs_timer(steve, 0.2, NC_IMAGE, 0); /* TODO - only draw bake image, can we enforce this */
-		WM_jobs_callbacks(steve, bake_startjob, NULL, bake_update);
+		WM_jobs_callbacks(steve, bake_startjob, NULL, bake_update, NULL);
 
 		G.afbreek= 0;
 

Modified: branches/render25/source/blender/editors/physics/physics_fluid.c
===================================================================
--- branches/render25/source/blender/editors/physics/physics_fluid.c	2010-04-13 09:23:19 UTC (rev 28159)
+++ branches/render25/source/blender/editors/physics/physics_fluid.c	2010-04-13 11:36:25 UTC (rev 28160)
@@ -1005,7 +1005,7 @@
 	/* setup job */
 	WM_jobs_customdata(steve, fb, fluidbake_free);
 	WM_jobs_timer(steve, 0.1, NC_SCENE|ND_FRAME, NC_SCENE|ND_FRAME);
-	WM_jobs_callbacks(steve, fluidbake_startjob, NULL, NULL);
+	WM_jobs_callbacks(steve, fluidbake_startjob, NULL, NULL, NULL);
 	
 	WM_jobs_start(CTX_wm_manager(C), steve);
 

Modified: branches/render25/source/blender/editors/render/render_internal.c
===================================================================
--- branches/render25/source/blender/editors/render/render_internal.c	2010-04-13 09:23:19 UTC (rev 28159)
+++ branches/render25/source/blender/editors/render/render_internal.c	2010-04-13 11:36:25 UTC (rev 28160)
@@ -544,6 +544,13 @@
 //		free_main(mainp);
 }
 
+static void render_endjob(void *rjv)
+{
+	/* XXX render stability hack */
+	G.rendering = 0;
+	WM_main_add_notifier(NC_WINDOW, NULL);
+}
+
 /* called by render, check job 'stop' value or the global */
 static int render_breakjob(void *rjv)
 {
@@ -561,7 +568,6 @@
 {
 	/* no running blender, remove handler and pass through */
 	if(0==WM_jobs_test(CTX_wm_manager(C), CTX_data_scene(C))) {
-		G.rendering = 0;
 		return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH;
 	}
 
@@ -647,7 +653,7 @@
 	steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, WM_JOB_EXCL_RENDER|WM_JOB_PRIORITY);
 	WM_jobs_customdata(steve, rj, render_freejob);
 	WM_jobs_timer(steve, 0.2, NC_SCENE|ND_RENDER_RESULT, 0);
-	WM_jobs_callbacks(steve, render_startjob, NULL, NULL);
+	WM_jobs_callbacks(steve, render_startjob, NULL, NULL, render_endjob);
 
 	/* get a render result image, and make sure it is empty */
 	ima= BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result");

Modified: branches/render25/source/blender/editors/render/render_preview.c
===================================================================
--- branches/render25/source/blender/editors/render/render_preview.c	2010-04-13 09:23:19 UTC (rev 28159)
+++ branches/render25/source/blender/editors/render/render_preview.c	2010-04-13 11:36:25 UTC (rev 28160)
@@ -1118,7 +1118,7 @@
 	/* setup job */
 	WM_jobs_customdata(steve, sp, shader_preview_free);
 	WM_jobs_timer(steve, 0.1, NC_MATERIAL, NC_MATERIAL);
-	WM_jobs_callbacks(steve, common_preview_startjob, NULL, NULL);
+	WM_jobs_callbacks(steve, common_preview_startjob, NULL, NULL, NULL);
 
 	WM_jobs_start(CTX_wm_manager(C), steve);
 }
@@ -1144,7 +1144,7 @@
 	/* setup job */
 	WM_jobs_customdata(steve, sp, shader_preview_free);
 	WM_jobs_timer(steve, 0.1, NC_MATERIAL, NC_MATERIAL);
-	WM_jobs_callbacks(steve, common_preview_startjob, NULL, shader_preview_updatejob);
+	WM_jobs_callbacks(steve, common_preview_startjob, NULL, shader_preview_updatejob, NULL);
 	
 	WM_jobs_start(CTX_wm_manager(C), steve);
 }

Modified: branches/render25/source/blender/editors/screen/area.c
===================================================================
--- branches/render25/source/blender/editors/screen/area.c	2010-04-13 09:23:19 UTC (rev 28159)
+++ branches/render25/source/blender/editors/screen/area.c	2010-04-13 11:36:25 UTC (rev 28160)
@@ -337,13 +337,21 @@
 	wmSubWindowScissorSet(win, ar->swinid, &ar->drawrct);
 	
 	UI_SetTheme(sa?sa->spacetype:0, ar->type?ar->type->regionid:0);
-	
-	/* optional header info instead? */
-	if(ar->headerstr) {
+
+	if(G.rendering && !ELEM(sa->spacetype, SPACE_IMAGE, SPACE_INFO)) {
+		/* XXX render stability hack */
 		UI_ThemeClearColor(TH_HEADER);
 		glClear(GL_COLOR_BUFFER_BIT);
 		
 		UI_ThemeColor(TH_TEXT);
+		BLF_draw_default(20, 8, 0.0f, "blocked while rendering");
+	}
+	else if(ar->headerstr) {
+		/* optional header info instead */
+		UI_ThemeClearColor(TH_HEADER);
+		glClear(GL_COLOR_BUFFER_BIT);
+		
+		UI_ThemeColor(TH_TEXT);
 		BLF_draw_default(20, 8, 0.0f, ar->headerstr);
 	}
 	else if(at->draw) {

Modified: branches/render25/source/blender/editors/screen/screendump.c
===================================================================
--- branches/render25/source/blender/editors/screen/screendump.c	2010-04-13 09:23:19 UTC (rev 28159)
+++ branches/render25/source/blender/editors/screen/screendump.c	2010-04-13 11:36:25 UTC (rev 28160)
@@ -323,7 +323,7 @@
 	/* setup job */
 	WM_jobs_customdata(steve, sj, screenshot_freejob);
 	WM_jobs_timer(steve, 0.1, 0, NC_SCREEN|ND_SCREENCAST);
-	WM_jobs_callbacks(steve, screenshot_startjob, NULL, screenshot_updatejob);
+	WM_jobs_callbacks(steve, screenshot_startjob, NULL, screenshot_updatejob, NULL);
 	
 	WM_jobs_start(CTX_wm_manager(C), steve);
 	

Modified: branches/render25/source/blender/editors/space_buttons/space_buttons.c
===================================================================
--- branches/render25/source/blender/editors/space_buttons/space_buttons.c	2010-04-13 09:23:19 UTC (rev 28159)
+++ branches/render25/source/blender/editors/space_buttons/space_buttons.c	2010-04-13 11:36:25 UTC (rev 28160)
@@ -262,6 +262,8 @@
 				case ND_KEYINGSET:
 					buttons_area_redraw(sa, BCONTEXT_SCENE);
 					break;
+				case ND_RENDER_RESULT:
+					break;
 				case ND_MODE:
 				case ND_LAYER:
 				default:

Modified: branches/render25/source/blender/editors/space_file/filelist.c
===================================================================
--- branches/render25/source/blender/editors/space_file/filelist.c	2010-04-13 09:23:19 UTC (rev 28159)
+++ branches/render25/source/blender/editors/space_file/filelist.c	2010-04-13 11:36:25 UTC (rev 28160)
@@ -1352,7 +1352,7 @@
 	steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), filelist, 0);
 	WM_jobs_customdata(steve, tj, thumbnails_free);
 	WM_jobs_timer(steve, 0.5, NC_WINDOW, NC_WINDOW);
-	WM_jobs_callbacks(steve, thumbnails_startjob, NULL, thumbnails_update);
+	WM_jobs_callbacks(steve, thumbnails_startjob, NULL, thumbnails_update, NULL);
 
 	/* start the job */
 	WM_jobs_start(CTX_wm_manager(C), steve);

Modified: branches/render25/source/blender/editors/space_info/info_stats.c
===================================================================
--- branches/render25/source/blender/editors/space_info/info_stats.c	2010-04-13 09:23:19 UTC (rev 28159)
+++ branches/render25/source/blender/editors/space_info/info_stats.c	2010-04-13 11:36:25 UTC (rev 28160)
@@ -38,6 +38,7 @@
 #include "BKE_context.h"
 #include "BKE_displist.h"
 #include "BKE_DerivedMesh.h"
+#include "BKE_global.h"
 #include "BKE_key.h"
 #include "BKE_mesh.h"
 #include "BKE_particle.h"
@@ -421,10 +422,13 @@
 
 char *ED_info_stats_string(Scene *scene)
 {
-	if(!scene->stats)
-		stats_update(scene);
-	stats_string(scene);
+	/* XXX render stability hack */
+	if(!G.rendering) {
+		if(!scene->stats)
+			stats_update(scene);
+		stats_string(scene);
+	}
 
-	return scene->stats->infostr;
+	return (scene->stats && scene->stats->infostr)? scene->stats->infostr: "";
 }
 

Modified: branches/render25/source/blender/editors/space_node/node_edit.c
===================================================================
--- branches/render25/source/blender/editors/space_node/node_edit.c	2010-04-13 09:23:19 UTC (rev 28159)
+++ branches/render25/source/blender/editors/space_node/node_edit.c	2010-04-13 11:36:25 UTC (rev 28160)
@@ -176,7 +176,7 @@
 	/* setup job */
 	WM_jobs_customdata(steve, cj, compo_freejob);
 	WM_jobs_timer(steve, 0.1, NC_SCENE, NC_SCENE|ND_COMPO_RESULT);
-	WM_jobs_callbacks(steve, compo_startjob, compo_initjob, compo_updatejob);
+	WM_jobs_callbacks(steve, compo_startjob, compo_initjob, compo_updatejob, NULL);
 	
 	WM_jobs_start(CTX_wm_manager(C), steve);
 	

Modified: branches/render25/source/blender/windowmanager/WM_api.h
===================================================================
--- branches/render25/source/blender/windowmanager/WM_api.h	2010-04-13 09:23:19 UTC (rev 28159)
+++ branches/render25/source/blender/windowmanager/WM_api.h	2010-04-13 11:36:25 UTC (rev 28160)
@@ -309,7 +309,8 @@
 void		WM_jobs_callbacks(struct wmJob *, 
 							  void (*startjob)(void *, short *, short *),
 							  void (*initjob)(void *),
-							  void (*update)(void *));
+							  void (*update)(void *),
+							  void (*endjob)(void *));
 
 void		WM_jobs_start(struct wmWindowManager *wm, struct wmJob *);
 void		WM_jobs_stop(struct wmWindowManager *wm, void *owner);

Modified: branches/render25/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- branches/render25/source/blender/windowmanager/intern/wm_event_system.c	2010-04-13 09:23:19 UTC (rev 28159)
+++ branches/render25/source/blender/windowmanager/intern/wm_event_system.c	2010-04-13 11:36:25 UTC (rev 28160)
@@ -1623,7 +1623,9 @@
 				}
 
 				for(sa= win->screen->areabase.first; sa; sa= sa->next) {
-					if(wm_event_inside_i(event, &sa->totrct)) {
+					/* XXX render stability hack */
+					if(G.rendering && !ELEM(sa->spacetype, SPACE_IMAGE, SPACE_INFO));
+					else if(wm_event_inside_i(event, &sa->totrct)) {
 						CTX_wm_area_set(C, sa);
 
 						if((action & WM_HANDLER_BREAK) == 0) {

Modified: branches/render25/source/blender/windowmanager/intern/wm_jobs.c
===================================================================
--- branches/render25/source/blender/windowmanager/intern/wm_jobs.c	2010-04-13 09:23:19 UTC (rev 28159)
+++ branches/render25/source/blender/windowmanager/intern/wm_jobs.c	2010-04-13 11:36:25 UTC (rev 28160)
@@ -96,6 +96,8 @@
 	void (*update)(void *);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list