[Bf-blender-cvs] [ecc03c8] master: Render API: Add RenderEngine.error_set() function

Sergey Sharybin noreply at git.blender.org
Fri Dec 5 18:15:58 CET 2014


Commit: ecc03c8ed0ca196f4c249ec25f331938a1a0405a
Author: Sergey Sharybin
Date:   Fri Dec 5 21:56:29 2014 +0500
Branches: master
https://developer.blender.org/rBecc03c8ed0ca196f4c249ec25f331938a1a0405a

Render API: Add RenderEngine.error_set() function

This function sets an error message which would be displayed after
rendering is over and info space lost the link to the engine.

===================================================================

M	source/blender/editors/render/render_internal.c
M	source/blender/makesrna/intern/rna_render.c
M	source/blender/render/extern/include/RE_engine.h
M	source/blender/render/extern/include/RE_pipeline.h
M	source/blender/render/intern/source/external_engine.c
M	source/blender/render/intern/source/render_result.c

===================================================================

diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c
index 9d5eed3..fcc90fa 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -340,7 +340,11 @@ static void render_freejob(void *rjv)
 }
 
 /* str is IMA_MAX_RENDER_TEXT in size */
-static void make_renderinfo_string(RenderStats *rs, Scene *scene, bool v3d_override, char *str)
+static void make_renderinfo_string(const RenderStats *rs,
+                                   const Scene *scene,
+                                   const bool v3d_override,
+                                   const char *error,
+                                   char *str)
 {
 	char info_time_str[32]; // used to be extern to header_info.c
 	uintptr_t mem_in_use, mmap_in_use, peak_memory;
@@ -413,8 +417,12 @@ static void make_renderinfo_string(RenderStats *rs, Scene *scene, bool v3d_overr
 		spos += sprintf(spos, IFACE_("| Full Sample %d "), rs->curfsa);
 	
 	/* extra info */
-	if (rs->infostr && rs->infostr[0])
+	if (rs->infostr && rs->infostr[0]) {
 		spos += sprintf(spos, "| %s ", rs->infostr);
+	}
+	else if (error && error[0]) {
+		spos += sprintf(spos, "| %s ", error);
+	}
 
 	/* very weak... but 512 characters is quite safe */
 	if (spos >= str + IMA_MAX_RENDER_TEXT)
@@ -435,7 +443,8 @@ static void image_renderinfo_cb(void *rjv, RenderStats *rs)
 		if (rr->text == NULL)
 			rr->text = MEM_callocN(IMA_MAX_RENDER_TEXT, "rendertext");
 
-		make_renderinfo_string(rs, rj->scene, rj->v3d_override, rr->text);
+		make_renderinfo_string(rs, rj->scene, rj->v3d_override,
+		                       rr->error, rr->text);
 	}
 
 	RE_ReleaseResult(rj->re);
@@ -1118,7 +1127,7 @@ static void render_view3d_renderinfo_cb(void *rjp, RenderStats *rs)
 		*rp->stop = 1;
 	}
 	else {
-		make_renderinfo_string(rs, rp->scene, false, rp->engine->text);
+		make_renderinfo_string(rs, rp->scene, false, NULL, rp->engine->text);
 	
 		/* make jobs timer to send notifier */
 		*(rp->do_update) = true;
diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c
index 5d4ec06..6db9c8e 100644
--- a/source/blender/makesrna/intern/rna_render.c
+++ b/source/blender/makesrna/intern/rna_render.c
@@ -519,6 +519,11 @@ static void rna_def_render_engine(BlenderRNA *brna)
 	prop = RNA_def_string(func, "message", NULL, 0, "Report Message", "");
 	RNA_def_property_flag(prop, PROP_REQUIRED);
 
+	func = RNA_def_function(srna, "error_set", "RE_engine_set_error_message");
+	RNA_def_function_ui_description(func, "Set error message displaying after the render is finished");
+	prop = RNA_def_string(func, "message", NULL, 0, "Report Message", "");
+	RNA_def_property_flag(prop, PROP_REQUIRED);
+
 	func = RNA_def_function(srna, "bind_display_space_shader", "engine_bind_display_space_shader");
 	RNA_def_function_ui_description(func, "Bind GLSL fragment shader that converts linear colors to display space colors using scene color management settings");
 	prop = RNA_def_pointer(func, "scene", "Scene", "", "");
diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h
index 4b0473f..5edf970 100644
--- a/source/blender/render/extern/include/RE_engine.h
+++ b/source/blender/render/extern/include/RE_engine.h
@@ -144,6 +144,7 @@ void RE_engine_update_stats(RenderEngine *engine, const char *stats, const char
 void RE_engine_update_progress(RenderEngine *engine, float progress);
 void RE_engine_update_memory_stats(RenderEngine *engine, float mem_used, float mem_peak);
 void RE_engine_report(RenderEngine *engine, int type, const char *msg);
+void RE_engine_set_error_message(RenderEngine *engine, const char *msg);
 
 int RE_engine_render(struct Render *re, int do_all);
 
diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h
index 61795c2..d1b6673 100644
--- a/source/blender/render/extern/include/RE_pipeline.h
+++ b/source/blender/render/extern/include/RE_pipeline.h
@@ -144,7 +144,7 @@ typedef struct RenderResult {
 
 	/* render info text */
 	char *text;
-	
+	char *error;
 } RenderResult;
 
 
diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c
index 8a15c5e..23ca376 100644
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@ -355,6 +355,19 @@ void RE_engine_report(RenderEngine *engine, int type, const char *msg)
 		BKE_report(engine->reports, type, msg);
 }
 
+void RE_engine_set_error_message(RenderEngine *engine, const char *msg)
+{
+	Render *re = engine->re;
+	if (re != NULL) {
+		RenderResult *rr = RE_AcquireResultRead(re);
+		if (rr->error != NULL) {
+			MEM_freeN(rr->error);
+		}
+		rr->error = BLI_strdup(msg);
+		RE_ReleaseResult(re);
+	}
+}
+
 void RE_engine_get_current_tiles(Render *re, int *total_tiles_r, rcti **tiles_r)
 {
 	RenderPart *pa;
diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c
index 6bb1358..de87fb2 100644
--- a/source/blender/render/intern/source/render_result.c
+++ b/source/blender/render/intern/source/render_result.c
@@ -94,6 +94,8 @@ void render_result_free(RenderResult *res)
 		MEM_freeN(res->rectf);
 	if (res->text)
 		MEM_freeN(res->text);
+	if (res->error)
+		MEM_freeN(res->error);
 	
 	MEM_freeN(res);
 }




More information about the Bf-blender-cvs mailing list