[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41009] trunk/blender/source/blender/nodes /intern/node_socket.c: Fix #28914: crash loading file saved with cycles builds in trunk.

Brecht Van Lommel brechtvanlommel at pandora.be
Fri Oct 14 14:20:58 CEST 2011


Revision: 41009
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41009
Author:   blendix
Date:     2011-10-14 12:20:58 +0000 (Fri, 14 Oct 2011)
Log Message:
-----------
Fix #28914: crash loading file saved with cycles builds in trunk.

The cause is an unknown node socket type in node groups. Ideally the node system
should handle this better and remove the unknown sockets from groups, but this
is a bit of a risky fix to do now, so instead the shader socket type has been
added, since this is a simple change and the code has been tested well.

Modified Paths:
--------------
    trunk/blender/source/blender/nodes/intern/node_socket.c

Modified: trunk/blender/source/blender/nodes/intern/node_socket.c
===================================================================
--- trunk/blender/source/blender/nodes/intern/node_socket.c	2011-10-14 12:17:35 UTC (rev 41008)
+++ trunk/blender/source/blender/nodes/intern/node_socket.c	2011-10-14 12:20:58 UTC (rev 41009)
@@ -128,6 +128,21 @@
 	/* buttonfunc */		NULL,
 };
 
+/****************** SHADER ******************/
+
+static bNodeSocketType node_socket_type_shader = {
+	/* type */				SOCK_SHADER,
+	/* ui_name */			"Shader",
+	/* ui_description */	"Shader",
+	/* ui_icon */			0,
+	/* ui_color */			{100,200,100,255},
+
+	/* value_structname */	NULL,
+	/* value_structsize */	0,
+
+	/* buttonfunc */		NULL,
+};
+
 /****************** MESH ******************/
 
 static bNodeSocketType node_socket_type_mesh = {
@@ -153,6 +168,7 @@
 	INIT_TYPE(rgba);
 	INIT_TYPE(int);
 	INIT_TYPE(boolean);
+	INIT_TYPE(shader);
 	INIT_TYPE(mesh);
 	
 	#undef INIT_TYPE
@@ -241,6 +257,17 @@
 	return sock;
 }
 
+struct bNodeSocket *nodeAddInputShader(struct bNodeTree *ntree, struct bNode *node, const char *name)
+{
+	bNodeSocket *sock= nodeAddSocket(ntree, node, SOCK_IN, name, SOCK_SHADER);
+	return sock;
+}
+struct bNodeSocket *nodeAddOutputShader(struct bNodeTree *ntree, struct bNode *node, const char *name)
+{
+	bNodeSocket *sock= nodeAddSocket(ntree, node, SOCK_OUT, name, SOCK_SHADER);
+	return sock;
+}
+
 struct bNodeSocket *nodeAddInputMesh(struct bNodeTree *ntree, struct bNode *node, const char *name)
 {
 	bNodeSocket *sock= nodeAddSocket(ntree, node, SOCK_IN, name, SOCK_MESH);
@@ -271,6 +298,9 @@
 	case SOCK_RGBA:
 		sock = nodeAddInputRGBA(ntree, node, stemp->name, stemp->val1, stemp->val2, stemp->val3, stemp->val4);
 		break;
+	case SOCK_SHADER:
+		sock = nodeAddInputShader(ntree, node, stemp->name);
+		break;
 	case SOCK_MESH:
 		sock = nodeAddInputMesh(ntree, node, stemp->name);
 		break;
@@ -299,6 +329,9 @@
 	case SOCK_RGBA:
 		sock = nodeAddOutputRGBA(ntree, node, stemp->name);
 		break;
+	case SOCK_SHADER:
+		sock = nodeAddOutputShader(ntree, node, stemp->name);
+		break;
 	case SOCK_MESH:
 		sock = nodeAddOutputMesh(ntree, node, stemp->name);
 		break;




More information about the Bf-blender-cvs mailing list