Render: Free persistent image storage when loading new file
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user