diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2015-11-30 02:51:30 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2015-11-30 02:54:45 +0300 |
commit | 5b90a6e188f78ee4544b528c55fb0f2a8f6e9fd6 (patch) | |
tree | b48605900800fdcfd036d192b5c45b3a790624a9 /source/blender/blenkernel/intern | |
parent | f448659a56210a093570bafa868a3a19761e67df (diff) |
Fix T38245: render slot getting lost when switching slots while compositing.
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/image.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index f4fce5c0019..6ff30134210 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -2923,7 +2923,7 @@ bool BKE_image_is_openexr(struct Image *ima) return false; } -void BKE_image_backup_render(Scene *scene, Image *ima) +void BKE_image_backup_render(Scene *scene, Image *ima, bool free_current_slot) { /* called right before rendering, ima->renders contains render * result pointers for everything but the current render */ @@ -2931,13 +2931,18 @@ void BKE_image_backup_render(Scene *scene, Image *ima) int slot = ima->render_slot, last = ima->last_render_slot; if (slot != last) { - if (ima->renders[slot]) { - RE_FreeRenderResult(ima->renders[slot]); - ima->renders[slot] = NULL; - } - ima->renders[last] = NULL; RE_SwapResult(re, &ima->renders[last]); + + if (ima->renders[slot]) { + if (free_current_slot) { + RE_FreeRenderResult(ima->renders[slot]); + ima->renders[slot] = NULL; + } + else { + RE_SwapResult(re, &ima->renders[slot]); + } + } } ima->last_render_slot = slot; |