Render: Free persistent image storage when loading new file

This commit is contained in:
2015-09-21 18:41:36 +05:00
parent 7b9bd5b546
commit 0dbde559cf
3 changed files with 16 additions and 0 deletions

View File

@@ -417,6 +417,7 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, const char *filepath
BKE_scene_set_background(G.main, curscene);
if (mode != LOAD_UNDO) {
RE_FreeAllPersistentData();
IMB_colormanagement_check_file_config(G.main);
}

View File

@@ -207,6 +207,10 @@ void RE_InitRenderCB(struct Render *re);
void RE_FreeRender(struct Render *re);
/* only called on exit */
void RE_FreeAllRender(void);
/* Free memory used by persistent data.
* Invoked when loading new file.
*/
void RE_FreeAllPersistentData(void);
/* only call on file load */
void RE_FreeAllRenderResults(void);
/* for external render engines that can keep persistent data */

View File

@@ -533,6 +533,17 @@ void RE_FreeAllRender(void)
#endif
}
void RE_FreeAllPersistentData(void)
{
Render *re;
for (re = RenderGlobal.renderlist.first; re != NULL; re = re->next) {
if ((re->r.mode & R_PERSISTENT_DATA) != 0 && re->engine != NULL) {
RE_engine_free(re->engine);
re->engine = NULL;
}
}
}
/* on file load, free all re */
void RE_FreeAllRenderResults(void)
{