[Bf-blender-cvs] [93ca780] multiview: Move 'Update Views' to the _ex panel, and fix crash on update routine

Dalai Felinto noreply at git.blender.org
Tue Mar 17 17:07:35 CET 2015


Commit: 93ca780e4dcfc5cbd5483040e3461d0101228964
Author: Dalai Felinto
Date:   Tue Mar 17 16:56:08 2015 +0100
Branches: multiview
https://developer.blender.org/rB93ca780e4dcfc5cbd5483040e3461d0101228964

Move 'Update Views' to the _ex panel, and fix crash on update routine

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

M	source/blender/editors/space_node/drawnode.c
M	source/blender/nodes/composite/nodes/node_composite_switchview.c

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

diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index 46b792f..d08a8ba 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -2122,7 +2122,7 @@ static void node_composit_buts_switch(uiLayout *layout, bContext *UNUSED(C), Poi
 	uiItemR(layout, ptr, "check", 0, NULL, ICON_NONE);
 }
 
-static void node_composit_buts_switch_view(uiLayout *layout, bContext *UNUSED(C), PointerRNA *UNUSED(ptr))
+static void node_composit_buts_switch_view_ex(uiLayout *layout, bContext *UNUSED(C), PointerRNA *UNUSED(ptr))
 {
 	PointerRNA op_ptr;
 	wmOperatorType *ot = WM_operatortype_find("NODE_OT_switch_view_update", 1);
@@ -2632,7 +2632,7 @@ static void node_composit_set_butfunc(bNodeType *ntype)
 			ntype->draw_buttons = node_composit_buts_switch;
 			break;
 		case CMP_NODE_SWITCH_VIEW:
-			ntype->draw_buttons = node_composit_buts_switch_view;
+			ntype->draw_buttons_ex = node_composit_buts_switch_view_ex;
 			break;
 		case CMP_NODE_MASK_BOX:
 			ntype->draw_buttons = node_composit_buts_boxmask;
diff --git a/source/blender/nodes/composite/nodes/node_composite_switchview.c b/source/blender/nodes/composite/nodes/node_composite_switchview.c
index 3896dac..d805cf4 100644
--- a/source/blender/nodes/composite/nodes/node_composite_switchview.c
+++ b/source/blender/nodes/composite/nodes/node_composite_switchview.c
@@ -74,15 +74,23 @@ static void cmp_node_switch_view_update(bNodeTree *ntree, bNode *node)
 	}
 
 	/* remove the views that were removed */
-	for (sock = node->inputs.first; sock; sock = sock->next) {
+	sock = node->inputs.last;
+	while (sock) {
 		srv = BLI_findstring(&scene->r.views, sock->name, offsetof(SceneRenderView, name));
 
-		if (srv == NULL)
-			nodeRemoveSocket(ntree, node, sock);
-		else if (srv->viewflag & SCE_VIEW_DISABLE)
-			sock->flag |= SOCK_HIDDEN;
-		else
-			sock->flag &= ~SOCK_HIDDEN;
+		if (srv == NULL) {
+			bNodeSocket *sock_del = sock;
+			sock = sock->prev;
+			nodeRemoveSocket(ntree, node, sock_del);
+		}
+		else {
+			if (srv->viewflag & SCE_VIEW_DISABLE)
+				sock->flag |= SOCK_HIDDEN;
+			else
+				sock->flag &= ~SOCK_HIDDEN;
+
+			sock = sock->prev;
+		}
 	}
 
 	/* add the new views */




More information about the Bf-blender-cvs mailing list