Commit: e0936e74abc5c9349fa55abe0f79f96f5add9f37
Author: Brecht Van Lommel
Date:   Thu Oct 26 14:17:58 2017 +0200
Branches: master
https://developer.blender.org/rBe0936e74abc5c9349fa55abe0f79f96f5add9f37

Fix image editor showing pass name when there is only a combined pass.

===================================================================

M       source/blender/editors/space_image/image_buttons.c
M       source/blender/render/extern/include/RE_pipeline.h
M       source/blender/render/intern/source/pipeline.c

===================================================================

diff --git a/source/blender/editors/space_image/image_buttons.c 
b/source/blender/editors/space_image/image_buttons.c
index 8037c2deb5b..6cee48ad05b 100644
--- a/source/blender/editors/space_image/image_buttons.c
+++ b/source/blender/editors/space_image/image_buttons.c
@@ -403,16 +403,6 @@ final:
        BKE_image_release_renderresult(scene, image);
 }
 
-static const char *ui_imageuser_pass_fake_name(RenderLayer *rl)
-{
-       if (rl == NULL) {
-               return IFACE_("Combined");
-       }
-       else {
-               return NULL;
-       }
-}
-
 static void ui_imageuser_pass_menu(bContext *UNUSED(C), uiLayout *layout, void 
*rnd_pt)
 {
        struct ImageUI_Data *rnd_data = rnd_pt;
@@ -424,9 +414,7 @@ static void ui_imageuser_pass_menu(bContext *UNUSED(C), 
uiLayout *layout, void *
        Scene *scene = iuser->scene;
        RenderResult *rr;
        RenderLayer *rl;
-       RenderPass rpass_fake = {NULL};
        RenderPass *rpass;
-       const char *fake_name;
        int nr;
 
        /* may have been freed since drawing */
@@ -445,13 +433,7 @@ static void ui_imageuser_pass_menu(bContext *UNUSED(C), 
uiLayout *layout, void *
 
        uiItemS(layout);
 
-       nr = 0;
-       fake_name = ui_imageuser_pass_fake_name(rl);
-
-       if (fake_name) {
-               BLI_strncpy(rpass_fake.name, fake_name, 
sizeof(rpass_fake.name));
-               nr += 1;
-       }
+       nr = (rl == NULL)? 1: 0;
 
        ListBase added_passes;
        BLI_listbase_clear(&added_passes);
@@ -471,11 +453,6 @@ static void ui_imageuser_pass_menu(bContext *UNUSED(C), 
uiLayout *layout, void *
 
        BLI_freelistN(&added_passes);
 
-       if (fake_name) {
-               uiDefButS(block, UI_BTYPE_BUT_MENU, B_NOP, 
IFACE_(rpass_fake.name), 0, 0,
-                         UI_UNIT_X * 5, UI_UNIT_X, &iuser->pass, 0.0f, 0.0, 0, 
-1, "");
-       }
-
        BKE_image_release_renderresult(scene, image);
 }
 
@@ -770,18 +747,19 @@ static void uiblock_layer_pass_buttons(
                }
 
                /* pass */
-               fake_name = ui_imageuser_pass_fake_name(rl);
-               rpass = (rl ? BLI_findlink(&rl->passes, iuser->pass  - 
(fake_name ? 1 : 0)) : NULL);
+               rpass = (rl ? BLI_findlink(&rl->passes, iuser->pass) : NULL);
 
-               display_name = rpass ? rpass->name : (fake_name ? fake_name : 
"");
-               rnd_pt = ui_imageuser_data_copy(&rnd_pt_local);
-               but = uiDefMenuBut(
-                       block, ui_imageuser_pass_menu, rnd_pt, 
IFACE_(display_name),
-                       0, 0, wmenu3, UI_UNIT_Y, TIP_("Select Pass"));
-               UI_but_func_menu_step_set(but, ui_imageuser_pass_menu_step);
-               UI_but_funcN_set(but, image_multi_cb, rnd_pt, rr);
-               UI_but_type_set_menu_from_pulldown(but);
-               rnd_pt = NULL;
+               if (rpass && RE_passes_have_name(rl)) {
+                       display_name = rpass->name;
+                       rnd_pt = ui_imageuser_data_copy(&rnd_pt_local);
+                       but = uiDefMenuBut(
+                               block, ui_imageuser_pass_menu, rnd_pt, 
IFACE_(display_name),
+                               0, 0, wmenu3, UI_UNIT_Y, TIP_("Select Pass"));
+                       UI_but_func_menu_step_set(but, 
ui_imageuser_pass_menu_step);
+                       UI_but_funcN_set(but, image_multi_cb, rnd_pt, rr);
+                       UI_but_type_set_menu_from_pulldown(but);
+                       rnd_pt = NULL;
+               }
 
                /* view */
                if (BLI_listbase_count_ex(&rr->views, 2) > 1 &&
diff --git a/source/blender/render/extern/include/RE_pipeline.h 
b/source/blender/render/extern/include/RE_pipeline.h
index cf9298bdb9e..61d0750a9c6 100644
--- a/source/blender/render/extern/include/RE_pipeline.h
+++ b/source/blender/render/extern/include/RE_pipeline.h
@@ -342,6 +342,7 @@ void RE_zbuf_accumulate_vecblur(
 int RE_seq_render_active(struct Scene *scene, struct RenderData *rd);
 
 bool RE_layers_have_name(struct RenderResult *result);
+bool RE_passes_have_name(struct RenderLayer *rl);
 
 struct RenderPass *RE_pass_find_by_name(volatile struct RenderLayer *rl, const 
char *name, const char *viewname);
 struct RenderPass *RE_pass_find_by_type(volatile struct RenderLayer *rl, int 
passtype, const char *viewname);
diff --git a/source/blender/render/intern/source/pipeline.c 
b/source/blender/render/intern/source/pipeline.c
index 837721e8943..2eac20214ba 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -4024,7 +4024,7 @@ bool RE_WriteEnvmapResult(struct ReportList *reports, 
Scene *scene, EnvMap *env,
        }
 }
 
-/* used in the interface to decide whether to show layers */
+/* Used in the interface to decide whether to show layers or passes. */
 bool RE_layers_have_name(struct RenderResult *rr)
 {
        switch (BLI_listbase_count_ex(&rr->layers, 2)) {
@@ -4038,6 +4038,17 @@ bool RE_layers_have_name(struct RenderResult *rr)
        return false;
 }
 
+bool RE_passes_have_name(struct RenderLayer *rl)
+{
+       for (RenderPass *rp = rl->passes.first; rp; rp = rp->next) {
+               if (!STREQ(rp->name, "Combined")) {
+                       return true;
+               }
+       }
+
+       return false;
+}
+
 RenderPass *RE_pass_find_by_name(volatile RenderLayer *rl, const char *name, 
const char *viewname)
 {
        RenderPass *rp = NULL;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to