diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-08-21 15:10:16 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-08-21 15:10:16 +0400 |
commit | f8db7ccb62cf2dbd26d4b6d9b89d6b3839a2b96a (patch) | |
tree | 527a8d0e7fb4eab8f4b376df2c051456e0d76ca0 /source | |
parent | ae9f5239a6c5dc120d13076bf90053f63b986c8b (diff) |
fix for bug with render slots - where the menus wouldnt only show layers from the last render which could be meaningless in different render slots.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/image.c | 4 | ||||
-rw-r--r-- | source/blender/editors/space_image/image_buttons.c | 18 |
2 files changed, 13 insertions, 9 deletions
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index d84c20f7a94..2b2128439c7 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -2145,7 +2145,9 @@ RenderResult *BKE_image_acquire_renderresult(Scene *scene, Image *ima) void BKE_image_release_renderresult(Scene *scene, Image *ima) { - if (ima->rr) ; + if (ima->rr) { + /* pass */ + } else if (ima->type == IMA_TYPE_R_RESULT) { if (ima->render_slot == ima->last_render_slot) RE_ReleaseResult(RE_GetRender(scene->id.name)); diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c index 56b340aac09..d0f4fe92257 100644 --- a/source/blender/editors/space_image/image_buttons.c +++ b/source/blender/editors/space_image/image_buttons.c @@ -681,10 +681,12 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, const char } else if (ima->type == IMA_TYPE_R_RESULT) { /* browse layer/passes */ - Render *re = RE_GetRender(scene->id.name); - RenderResult *rr = RE_AcquireResultRead(re); + RenderResult *rr; + + /* use BKE_image_acquire_renderresult so we get the correct slot in the menu */ + rr = BKE_image_acquire_renderresult(scene, ima); uiblock_layer_pass_arrow_buttons(layout, rr, iuser, &ima->render_slot); - RE_ReleaseResult(re); + BKE_image_release_renderresult(scene, ima); } } else { @@ -867,16 +869,16 @@ void uiTemplateImageSettings(uiLayout *layout, PointerRNA *imfptr) void uiTemplateImageLayers(uiLayout *layout, bContext *C, Image *ima, ImageUser *iuser) { Scene *scene = CTX_data_scene(C); - Render *re; - RenderResult *rr; /* render layers and passes */ if (ima && iuser) { const float dpi_fac = UI_DPI_FAC; - re = RE_GetRender(scene->id.name); - rr = RE_AcquireResultRead(re); + RenderResult *rr; + + /* use BKE_image_acquire_renderresult so we get the correct slot in the menu */ + rr = BKE_image_acquire_renderresult(scene, ima); uiblock_layer_pass_buttons(layout, rr, iuser, 160 * dpi_fac, (ima->type == IMA_TYPE_R_RESULT) ? &ima->render_slot : NULL); - RE_ReleaseResult(re); + BKE_image_release_renderresult(scene, ima); } } |