Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-03-12 15:32:23 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-03-12 15:32:23 +0400
commitb53cbb4e011f7912f7ef5dcada86e77d55b76766 (patch)
treee89fa9d850f6313e6215853a1e1db7ca2d36400c /source/blender
parentca5fd21bb5c43d605c8fef270e397184ec73d480 (diff)
Fix #30512: external render saved render result after reporting error.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/BKE_report.h2
-rw-r--r--source/blender/blenkernel/intern/report.c17
-rw-r--r--source/blender/render/intern/source/external_engine.c4
3 files changed, 20 insertions, 3 deletions
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 <stdarg.h>
#include <stdio.h>
#include <string.h>
@@ -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;
}