Fix T38245: Render slot buffer gets deleted in compositor when input is an image

This was more like a TODO than a bug, but wasn't difficult to support.

Need to backup image slots before doing re-compo in nodes editor.

If something breaks, lease poke me!
This commit is contained in:
2014-04-30 18:12:55 +06:00
parent 6ab3a2f8a4
commit 1b9feb04ab

View File

@@ -257,7 +257,6 @@ static void compo_startjob(void *cjv, short *stop, short *do_update, float *prog
ntree->udh = cj;
// XXX BIF_store_spare();
/* 1 is do_previews */
ntreeCompositExecTree(cj->scene, ntree, &cj->scene->r, false, true, &scene->view_settings, &scene->display_settings);
@@ -278,6 +277,7 @@ void ED_node_composite_job(const bContext *C, struct bNodeTree *nodetree, Scene
{
wmJob *wm_job;
CompoJob *cj;
Scene *scene = CTX_data_scene(C);
/* to fix bug: [#32272] */
if (G.is_rendering) {
@@ -288,12 +288,14 @@ void ED_node_composite_job(const bContext *C, struct bNodeTree *nodetree, Scene
G.is_break = false;
#endif
BKE_image_backup_render(scene, BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result"));
wm_job = WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene_owner, "Compositing",
WM_JOB_EXCL_RENDER | WM_JOB_PROGRESS, WM_JOB_TYPE_COMPOSITE);
cj = MEM_callocN(sizeof(CompoJob), "compo job");
/* customdata for preview thread */
cj->scene = CTX_data_scene(C);
cj->scene = scene;
cj->ntree = nodetree;
cj->recalc_flags = compo_get_recalc_flags(C);