From b53cbb4e011f7912f7ef5dcada86e77d55b76766 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 12 Mar 2012 11:32:23 +0000 Subject: Fix #30512: external render saved render result after reporting error. --- source/blender/blenkernel/BKE_report.h | 2 ++ source/blender/blenkernel/intern/report.c | 17 ++++++++++++++--- source/blender/render/intern/source/external_engine.c | 4 ++++ 3 files changed, 20 insertions(+), 3 deletions(-) (limited to 'source/blender') diff --git a/source/blender/blenkernel/BKE_report.h b/source/blender/blenkernel/BKE_report.h index fd372ae6d83..f6307806491 100644 --- a/source/blender/blenkernel/BKE_report.h +++ b/source/blender/blenkernel/BKE_report.h @@ -66,6 +66,8 @@ char *BKE_reports_string(ReportList *reports, ReportType level); void BKE_reports_print(ReportList *reports, ReportType level); Report *BKE_reports_last_displayable(ReportList *reports); + +int BKE_reports_contain(ReportList *reports, ReportType level); #ifdef __cplusplus } diff --git a/source/blender/blenkernel/intern/report.c b/source/blender/blenkernel/intern/report.c index ffa9e027108..04bb45df282 100644 --- a/source/blender/blenkernel/intern/report.c +++ b/source/blender/blenkernel/intern/report.c @@ -37,7 +37,6 @@ #include "BKE_report.h" #include "BKE_global.h" /* G.background only */ - #include #include #include @@ -264,12 +263,24 @@ void BKE_reports_print(ReportList *reports, ReportType level) Report *BKE_reports_last_displayable(ReportList *reports) { - Report *report=NULL; + Report *report; - for (report= (Report *)reports->list.last; report; report=report->prev) { + for (report= reports->list.last; report; report=report->prev) { if (ELEM3(report->type, RPT_ERROR, RPT_WARNING, RPT_INFO)) return report; } return NULL; } + +int BKE_reports_contain(ReportList *reports, ReportType level) +{ + Report *report; + + for(report=reports->list.first; report; report=report->next) + if(report->type >= level) + return TRUE; + + return FALSE; +} + diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c index 335de2dd055..3aa69171aa5 100644 --- a/source/blender/render/intern/source/external_engine.c +++ b/source/blender/render/intern/source/external_engine.c @@ -42,6 +42,7 @@ #include "BLI_string.h" #include "BLI_utildefines.h" +#include "BKE_global.h" #include "BKE_report.h" #include "BKE_scene.h" @@ -323,6 +324,9 @@ int RE_engine_render(Render *re, int do_all) RE_engine_free(engine); + if(BKE_reports_contain(re->reports, RPT_ERROR)) + G.afbreek = 1; + return 1; } -- cgit v1.2.3