[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55422] trunk/blender/source/blender: Removed the is_local_tree property from compo/shader/texture node trees.

Lukas Toenne lukas.toenne at googlemail.com
Tue Mar 19 19:15:33 CET 2013


Revision: 55422
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55422
Author:   lukastoenne
Date:     2013-03-19 18:15:33 +0000 (Tue, 19 Mar 2013)
Log Message:
-----------
Removed the is_local_tree property from compo/shader/texture node trees. This was using an ID property, which causes trouble with 2.62 builds (possibly later) due to an old bug that causes ID properties in local node trees not loaded correctly. The bug has been fixed since then, but creating id properties will break with these builds. The property was not really necessary, so removing it will make it work as long as users don't add id properties themselves.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_node/node_edit.c
    trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_image.c

Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c	2013-03-19 15:49:53 UTC (rev 55421)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c	2013-03-19 18:15:33 UTC (rev 55422)
@@ -329,15 +329,11 @@
 	bNode *in, *out;
 	bNodeSocket *fromsock, *tosock, *sock;
 	bNodeTree *ntree;
-	PointerRNA ptr;
 	int output_type, shader_type;
 	float color[4] = { 0.0f, 0.0f, 0.0f, 1.0f }, strength = 1.0f;
 	
 	ntree = ntreeAddTree(NULL, "Shader Nodetree", ntreeType_Shader->idname);
 
-	RNA_id_pointer_create((ID *)ntree, &ptr);
-	RNA_boolean_set(&ptr, "is_local_tree", TRUE);
-
 	switch (GS(id->name)) {
 		case ID_MA:
 		{
@@ -425,7 +421,6 @@
 {
 	bNode *in, *out;
 	bNodeSocket *fromsock, *tosock;
-	PointerRNA ptr;
 	
 	/* but lets check it anyway */
 	if (sce->nodetree) {
@@ -436,9 +431,6 @@
 	
 	sce->nodetree = ntreeAddTree(NULL, "Compositing Nodetree", ntreeType_Composite->idname);
 	
-	RNA_id_pointer_create((ID *)sce->nodetree, &ptr);
-	RNA_boolean_set(&ptr, "is_local_tree", TRUE);
-	
 	sce->nodetree->chunksize = 256;
 	sce->nodetree->edit_quality = NTREE_QUALITY_HIGH;
 	sce->nodetree->render_quality = NTREE_QUALITY_HIGH;
@@ -470,7 +462,6 @@
 {
 	bNode *in, *out;
 	bNodeSocket *fromsock, *tosock;
-	PointerRNA ptr;
 	
 	/* but lets check it anyway */
 	if (tx->nodetree) {
@@ -481,9 +472,6 @@
 	
 	tx->nodetree = ntreeAddTree(NULL, "Texture Nodetree", ntreeType_Texture->idname);
 	
-	RNA_id_pointer_create((ID *)tx->nodetree, &ptr);
-	RNA_boolean_set(&ptr, "is_local_tree", TRUE);
-	
 	out = nodeAddStaticNode(C, tx->nodetree, TEX_NODE_OUTPUT);
 	out->locx = 300.0f; out->locy = 300.0f;
 	

Modified: trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_nodetree.c	2013-03-19 15:49:53 UTC (rev 55421)
+++ trunk/blender/source/blender/makesrna/intern/rna_nodetree.c	2013-03-19 18:15:33 UTC (rev 55422)
@@ -6944,11 +6944,6 @@
 	RNA_def_property_ui_text(prop, "Two Pass", "Use two pass execution during editing: first calculate fast nodes, "
 	                                           "second pass calculate all nodes");
 
-	prop = RNA_def_property(srna, "is_local_tree", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_default(prop, FALSE);
-	RNA_def_property_flag(prop, PROP_IDPROPERTY);
-	RNA_def_property_ui_text(prop, "Local Scene Tree", "Local scene node tree, eligible for special node types");
-
 	prop = RNA_def_property(srna, "use_viewer_border", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", NTREE_VIEWER_BORDER);
 	RNA_def_property_ui_text(prop, "Viewer Border", "Use boundaries for viewer nodes and composite backdrop");
@@ -6958,34 +6953,22 @@
 static void rna_def_shader_nodetree(BlenderRNA *brna)
 {
 	StructRNA *srna;
-	PropertyRNA *prop;
 
 	srna = RNA_def_struct(brna, "ShaderNodeTree", "NodeTree");
 	RNA_def_struct_ui_text(srna, "Shader Node Tree",
 	                       "Node tree consisting of linked nodes used for materials (and other shading datablocks)");
 	RNA_def_struct_sdna(srna, "bNodeTree");
 	RNA_def_struct_ui_icon(srna, ICON_MATERIAL);
-
-	prop = RNA_def_property(srna, "is_local_tree", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_default(prop, FALSE);
-	RNA_def_property_flag(prop, PROP_IDPROPERTY);
-	RNA_def_property_ui_text(prop, "Local Material Tree", "Local material node tree, eligible for special node types");
 }
 
 static void rna_def_texture_nodetree(BlenderRNA *brna)
 {
 	StructRNA *srna;
-	PropertyRNA *prop;
 
 	srna = RNA_def_struct(brna, "TextureNodeTree", "NodeTree");
 	RNA_def_struct_ui_text(srna, "Texture Node Tree", "Node tree consisting of linked nodes used for textures");
 	RNA_def_struct_sdna(srna, "bNodeTree");
 	RNA_def_struct_ui_icon(srna, ICON_TEXTURE);
-
-	prop = RNA_def_property(srna, "is_local_tree", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_default(prop, FALSE);
-	RNA_def_property_flag(prop, PROP_IDPROPERTY);
-	RNA_def_property_ui_text(prop, "Local Texture Tree", "Local texture node tree, eligible for special node types");
 }
 
 static void define_specific_node(BlenderRNA *brna, const char *struct_name, const char *base_name,

Modified: trunk/blender/source/blender/nodes/composite/nodes/node_composite_image.c
===================================================================
--- trunk/blender/source/blender/nodes/composite/nodes/node_composite_image.c	2013-03-19 15:49:53 UTC (rev 55421)
+++ trunk/blender/source/blender/nodes/composite/nodes/node_composite_image.c	2013-03-19 18:15:33 UTC (rev 55422)
@@ -31,6 +31,9 @@
 
 #include "node_composite_util.h"
 
+#include "BKE_global.h"
+#include "BKE_main.h"
+
 /* **************** IMAGE (and RenderResult, multilayer image) ******************** */
 
 static bNodeSocketTemplate cmp_node_rlayers_out[] = {
@@ -333,11 +336,20 @@
 
 static int node_composit_poll_rlayers(bNodeType *UNUSED(ntype), bNodeTree *ntree)
 {
-	PointerRNA ptr;
-	
-	/* render layers node can only be used in local scene->nodetree, since it directly links to the scene */
-	RNA_id_pointer_create((ID *)ntree, &ptr);
-	return (strcmp(ntree->idname, "CompositorNodeTree")==0 && RNA_boolean_get(&ptr, "is_local_tree"));
+	if (strcmp(ntree->idname, "CompositorNodeTree")==0) {
+		Scene *scene;
+		
+		/* XXX ugly: check if ntree is a local scene node tree.
+		 * Render layers node can only be used in local scene->nodetree,
+		 * since it directly links to the scene.
+		 */
+		for (scene = G.main->scene.first; scene; scene = scene->id.next)
+			if (scene->nodetree == ntree)
+				break;
+		
+		return (scene != NULL);
+	}
+	return false;
 }
 
 void register_node_type_cmp_rlayers(void)




More information about the Bf-blender-cvs mailing list