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.

This commit is contained in:
Campbell Barton
2012-08-21 11:10:16 +00:00
parent ae9f5239a6
commit f8db7ccb62
2 changed files with 13 additions and 9 deletions

View File

@@ -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));

View File

@@ -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);
}
}