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.
This commit is contained in:
@@ -340,7 +340,11 @@ static void render_freejob(void *rjv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* str is IMA_MAX_RENDER_TEXT in size */
|
/* 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
|
char info_time_str[32]; // used to be extern to header_info.c
|
||||||
uintptr_t mem_in_use, mmap_in_use, peak_memory;
|
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);
|
spos += sprintf(spos, IFACE_("| Full Sample %d "), rs->curfsa);
|
||||||
|
|
||||||
/* extra info */
|
/* extra info */
|
||||||
if (rs->infostr && rs->infostr[0])
|
if (rs->infostr && rs->infostr[0]) {
|
||||||
spos += sprintf(spos, "| %s ", rs->infostr);
|
spos += sprintf(spos, "| %s ", rs->infostr);
|
||||||
|
}
|
||||||
|
else if (error && error[0]) {
|
||||||
|
spos += sprintf(spos, "| %s ", error);
|
||||||
|
}
|
||||||
|
|
||||||
/* very weak... but 512 characters is quite safe */
|
/* very weak... but 512 characters is quite safe */
|
||||||
if (spos >= str + IMA_MAX_RENDER_TEXT)
|
if (spos >= str + IMA_MAX_RENDER_TEXT)
|
||||||
@@ -435,7 +443,8 @@ static void image_renderinfo_cb(void *rjv, RenderStats *rs)
|
|||||||
if (rr->text == NULL)
|
if (rr->text == NULL)
|
||||||
rr->text = MEM_callocN(IMA_MAX_RENDER_TEXT, "rendertext");
|
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);
|
RE_ReleaseResult(rj->re);
|
||||||
@@ -1118,7 +1127,7 @@ static void render_view3d_renderinfo_cb(void *rjp, RenderStats *rs)
|
|||||||
*rp->stop = 1;
|
*rp->stop = 1;
|
||||||
}
|
}
|
||||||
else {
|
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 */
|
/* make jobs timer to send notifier */
|
||||||
*(rp->do_update) = true;
|
*(rp->do_update) = true;
|
||||||
|
|||||||
@@ -519,6 +519,11 @@ static void rna_def_render_engine(BlenderRNA *brna)
|
|||||||
prop = RNA_def_string(func, "message", NULL, 0, "Report Message", "");
|
prop = RNA_def_string(func, "message", NULL, 0, "Report Message", "");
|
||||||
RNA_def_property_flag(prop, PROP_REQUIRED);
|
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");
|
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");
|
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", "", "");
|
prop = RNA_def_pointer(func, "scene", "Scene", "", "");
|
||||||
|
|||||||
@@ -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_progress(RenderEngine *engine, float progress);
|
||||||
void RE_engine_update_memory_stats(RenderEngine *engine, float mem_used, float mem_peak);
|
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_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);
|
int RE_engine_render(struct Render *re, int do_all);
|
||||||
|
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ typedef struct RenderResult {
|
|||||||
|
|
||||||
/* render info text */
|
/* render info text */
|
||||||
char *text;
|
char *text;
|
||||||
|
char *error;
|
||||||
} RenderResult;
|
} RenderResult;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -355,6 +355,19 @@ void RE_engine_report(RenderEngine *engine, int type, const char *msg)
|
|||||||
BKE_report(engine->reports, type, 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)
|
void RE_engine_get_current_tiles(Render *re, int *total_tiles_r, rcti **tiles_r)
|
||||||
{
|
{
|
||||||
RenderPart *pa;
|
RenderPart *pa;
|
||||||
|
|||||||
@@ -94,6 +94,8 @@ void render_result_free(RenderResult *res)
|
|||||||
MEM_freeN(res->rectf);
|
MEM_freeN(res->rectf);
|
||||||
if (res->text)
|
if (res->text)
|
||||||
MEM_freeN(res->text);
|
MEM_freeN(res->text);
|
||||||
|
if (res->error)
|
||||||
|
MEM_freeN(res->error);
|
||||||
|
|
||||||
MEM_freeN(res);
|
MEM_freeN(res);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user