diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c index f38a5691a6f..341f56667fa 100644 --- a/source/blender/editors/render/render_internal.c +++ b/source/blender/editors/render/render_internal.c @@ -594,11 +594,15 @@ static void render_endjob(void *rjv) free_main(rj->main); /* else the frame will not update for the original value */ - ED_update_for_newframe(G.main, rj->scene, rj->win->screen, 1); + if(!(rj->scene->r.scemode & R_NO_FRAME_UPDATE)) + ED_update_for_newframe(G.main, rj->scene, rj->win->screen, 1); /* XXX above function sets all tags in nodes */ ntreeClearTags(rj->scene->nodetree); + /* potentially set by caller */ + rj->scene->r.scemode &= ~R_NO_FRAME_UPDATE; + if(rj->srl) { NodeTagIDChanged(rj->scene->nodetree, &rj->scene->id); WM_main_add_notifier(NC_NODE|NA_EDITED, rj->scene); diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 1279863802a..7827058f886 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -2178,6 +2178,9 @@ int node_render_changed_exec(bContext *C, wmOperator *UNUSED(op)) RNA_string_set(&op_ptr, "layer", srl->name); RNA_string_set(&op_ptr, "scene", sce->id.name+2); + /* to keep keypositions */ + sce->r.scemode |= R_NO_FRAME_UPDATE; + WM_operator_name_call(C, "RENDER_OT_render", WM_OP_INVOKE_DEFAULT, &op_ptr); WM_operator_properties_free(&op_ptr); diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index f87d10b1f7d..45850d3f20f 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -923,7 +923,7 @@ typedef struct Scene { #define R_COMP_FREE 0x0800 #define R_NO_IMAGE_LOAD 0x1000 #define R_NO_TEX 0x2000 -/*#define R_STAMP_INFO 0x4000 deprecated */ +#define R_NO_FRAME_UPDATE 0x4000 #define R_FULL_SAMPLE 0x8000 /* #define R_DEPRECATED 0x10000 */ /* #define R_RECURS_PROTECTION 0x20000 */ diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 14f80986ba3..b5cfc123c15 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -4911,7 +4911,7 @@ void RE_Database_FromScene(Render *re, Main *bmain, Scene *scene, unsigned int l lay &= 0xFF000000; /* applies changes fully */ - if((re->r.scemode & R_PREVIEWBUTS)==0) + if((re->r.scemode & (R_NO_FRAME_UPDATE|R_PREVIEWBUTS))==0) scene_update_for_newframe(re->main, re->scene, lay); /* if no camera, viewmat should have been set! */