[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51653] trunk/blender/source/blender: Bugfix #32975

Ton Roosendaal ton at blender.org
Fri Oct 26 13:29:30 CEST 2012


Revision: 51653
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51653
Author:   ton
Date:     2012-10-26 11:29:30 +0000 (Fri, 26 Oct 2012)
Log Message:
-----------
Bugfix #32975

Shader nodes didn't redraw correct on preview-type changes.
Also made shader node previews draw nicely, without flashing empty images.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/node.c
    trunk/blender/source/blender/makesrna/intern/rna_material.c

Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c	2012-10-26 10:54:02 UTC (rev 51652)
+++ trunk/blender/source/blender/blenkernel/intern/node.c	2012-10-26 11:29:30 UTC (rev 51653)
@@ -403,8 +403,14 @@
 	
 	node->new_node = nnode;
 	nnode->new_node = NULL;
-	nnode->preview = NULL;
 	
+	/* only shader nodes get pleasant preview updating this way, compo uses own system */
+	if (node->preview && ntree->type == NTREE_SHADER) {
+		nnode->preview = MEM_dupallocN(node->preview);
+		if (node->preview->rect)
+			nnode->preview->rect = MEM_dupallocN(node->preview->rect);
+	}
+	
 	if (ntree)
 		ntree->update |= NTREE_UPDATE_NODES;
 	

Modified: trunk/blender/source/blender/makesrna/intern/rna_material.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_material.c	2012-10-26 10:54:02 UTC (rev 51652)
+++ trunk/blender/source/blender/makesrna/intern/rna_material.c	2012-10-26 11:29:30 UTC (rev 51653)
@@ -107,6 +107,17 @@
 	}
 }
 
+static void rna_Material_update_previews(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+	Material *ma = ptr->id.data;
+	
+	if (ma->nodetree)
+		ntreeClearPreview(ma->nodetree);
+		
+	rna_Material_update(bmain, scene, ptr);
+}
+
+
 static void rna_Material_draw_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *ptr)
 {
 	Material *ma = ptr->id.data;
@@ -1757,7 +1768,7 @@
 	RNA_def_property_enum_sdna(prop, NULL, "pr_type");
 	RNA_def_property_enum_items(prop, preview_type_items);
 	RNA_def_property_ui_text(prop, "Preview render type", "Type of preview render");
-	RNA_def_property_update(prop, 0, "rna_Material_update");
+	RNA_def_property_update(prop, 0, "rna_Material_update_previews");
 	
 	prop = RNA_def_property(srna, "ambient", PROP_FLOAT, PROP_FACTOR);
 	RNA_def_property_float_sdna(prop, NULL, "amb");




More information about the Bf-blender-cvs mailing list