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:
authorCampbell Barton <ideasman42@gmail.com>2012-03-26 12:10:12 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-03-26 12:10:12 +0400
commitce4eb573017550c37e8119681a1e83c2e646c66f (patch)
tree6095b0d2f19876eb1371a164479d7c64f3986fed
parent4ade85612c95c81d3d45826a93bd24ee9c3c9dd4 (diff)
fix [#30653] Wrong image at UV/Image Editor window
render results would be displayed on loading new files if the scene names matches, now free render-results so as not to display stale data - also saves some memory.
-rw-r--r--source/blender/blenkernel/intern/blender.c6
-rw-r--r--source/blender/render/extern/include/RE_pipeline.h2
-rw-r--r--source/blender/render/intern/source/pipeline.c14
3 files changed, 22 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index 26c59129914..b8df30c5de9 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -78,6 +78,7 @@
#include "BKE_screen.h"
#include "BKE_sequencer.h"
#include "BKE_sound.h"
+#include "RE_pipeline.h"
#include "BLO_undofile.h"
@@ -199,6 +200,11 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, const char *filepath
recover= (G.fileflags & G_FILE_RECOVER);
+ /* Free all render results, without this stale data gets displayed after loading files */
+ if (mode != 'u') {
+ RE_FreeAllRenderResults();
+ }
+
/* Only make filepaths compatible when loading for real (not undo) */
if (mode != 'u') {
clean_paths(bfd->main);
diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h
index b81066201e7..315995475e9 100644
--- a/source/blender/render/extern/include/RE_pipeline.h
+++ b/source/blender/render/extern/include/RE_pipeline.h
@@ -165,6 +165,8 @@ void RE_InitRenderCB(struct Render *re);
void RE_FreeRender (struct Render *re);
/* only called on exit */
void RE_FreeAllRender (void);
+/* only call on file load */
+void RE_FreeAllRenderResults(void);
/* get results and statistics */
void RE_FreeRenderResult(struct RenderResult *rr);
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index 5db59fcdcc0..a4a244daf43 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -410,6 +410,20 @@ void RE_FreeAllRender(void)
}
}
+/* on file load, free all re */
+void RE_FreeAllRenderResults(void)
+{
+ Render *re;
+
+ for (re = RenderGlobal.renderlist.first; re; re = re->next) {
+ render_result_free(re->result);
+ render_result_free(re->pushedresult);
+
+ re->result = NULL;
+ re->pushedresult = NULL;
+ }
+}
+
/* ********* initialize state ******** */