[Bf-blender-cvs] [cd729e9] master: Image Editor: Fix passes increase/decrease buttons
Dalai Felinto
noreply at git.blender.org
Fri Apr 17 15:39:09 CEST 2015
Commit: cd729e9a4ee16300ccf9ec47c73af440d195c792
Author: Dalai Felinto
Date: Fri Apr 17 10:38:17 2015 -0300
Branches: master
https://developer.blender.org/rBcd729e9a4ee16300ccf9ec47c73af440d195c792
Image Editor: Fix passes increase/decrease buttons
This was half-broken even in 2.74 (if you were using compositor), multiview did us the favour of breaking this for all cases (you are welcome).
It is all working now.
===================================================================
M source/blender/editors/space_image/image_buttons.c
===================================================================
diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c
index 20da0f3..cb490eb 100644
--- a/source/blender/editors/space_image/image_buttons.c
+++ b/source/blender/editors/space_image/image_buttons.c
@@ -545,46 +545,61 @@ static void image_multi_declay_cb(bContext *C, void *rr_v, void *iuser_v)
}
static void image_multi_incpass_cb(bContext *C, void *rr_v, void *iuser_v)
{
- /* this wasn't working before multiview, it needs to be fixed, but it wasn't working anyways --dfelinto */
-#if 0
RenderResult *rr = rr_v;
ImageUser *iuser = iuser_v;
- RenderLayer *rl = BLI_findlink(&rr->layers, iuser->layer);
+ RenderLayer *rl;
+ RenderPass *rp;
+ RenderPass *next = NULL;
+ int layer = iuser->layer;
- if (rl) {
- int tot = BLI_listbase_count(&rl->passes);
+ if (RE_HasFakeLayer(rr)) layer -= 1;
+ rl = BLI_findlink(&rr->layers, layer);
- if (RE_HasFakeLayer(rr))
- tot++; /* fake compo/sequencer layer */
+ if (rl) {
+ for (rp = rl->passes.first; rp; rp = rp->next) {
+ if (rp->passtype == iuser->passtype) {
+ next = rp->next;
+ if (next && (next->passtype == rp->passtype))
+ next = next->next;
+ break;
+ }
+ }
- if (iuser->pass < tot - 1) {
- iuser->pass++;
- BKE_image_multilayer_index(rr, iuser);
+ if (next != NULL && iuser->passtype != next->passtype) {
+ iuser->passtype = next->passtype;
+ BKE_image_multilayer_index(rr, iuser);
WM_event_add_notifier(C, NC_IMAGE | ND_DRAW, NULL);
}
}
-#else
- (void)C;
- (void)rr_v;
- (void)iuser_v;
-#endif
}
static void image_multi_decpass_cb(bContext *C, void *rr_v, void *iuser_v)
{
- /* this wasn't working before multiview, it needs to be fixed, but it wasn't working anyways --dfelinto */
-#if 0
+ RenderResult *rr = rr_v;
ImageUser *iuser = iuser_v;
+ RenderLayer *rl;
+ RenderPass *rp;
+ RenderPass *prev= NULL;
+ int layer = iuser->layer;
- if (iuser->pass > 0) {
- iuser->pass--;
- BKE_image_multilayer_index(rr_v, iuser);
- WM_event_add_notifier(C, NC_IMAGE | ND_DRAW, NULL);
+ if (RE_HasFakeLayer(rr)) layer -= 1;
+ rl = BLI_findlink(&rr->layers, layer);
+
+ if (rl) {
+ for (rp = rl->passes.last; rp; rp = rp->prev) {
+ if (rp->passtype == iuser->passtype) {
+ prev = rp->prev;
+ if (prev && (prev->passtype == rp->passtype))
+ prev = prev->prev;
+ break;
+ }
+ }
+
+ if (prev != NULL && iuser->passtype != prev->passtype) {
+ iuser->passtype = prev->passtype;
+ BKE_image_multilayer_index(rr, iuser);
+ WM_event_add_notifier(C, NC_IMAGE | ND_DRAW, NULL);
+ }
}
-#else
- (void)C;
- (void)rr_v;
- (void)iuser_v;
-#endif
}
/* 5 view button callbacks... */
More information about the Bf-blender-cvs
mailing list