[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26870] trunk/blender/source/blender: Fix #19736: GLSL viewport materials are not updated on all changes.

Brecht Van Lommel brecht at blender.org
Sat Feb 13 14:49:27 CET 2010


Revision: 26870
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26870
Author:   blendix
Date:     2010-02-13 14:49:27 +0100 (Sat, 13 Feb 2010)

Log Message:
-----------
Fix #19736: GLSL viewport materials are not updated on all changes.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/object/object_add.c
    trunk/blender/source/blender/makesrna/intern/rna_lamp.c
    trunk/blender/source/blender/makesrna/intern/rna_material.c

Modified: trunk/blender/source/blender/editors/object/object_add.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_add.c	2010-02-13 13:38:10 UTC (rev 26869)
+++ trunk/blender/source/blender/editors/object/object_add.c	2010-02-13 13:49:27 UTC (rev 26870)
@@ -89,6 +89,7 @@
 #include "ED_mball.h"
 #include "ED_mesh.h"
 #include "ED_object.h"
+#include "ED_render.h"
 #include "ED_screen.h"
 #include "ED_transform.h"
 
@@ -294,6 +295,7 @@
 	ED_object_base_init_transform(C, BASACT, loc, rot);
 
 	DAG_scene_sort(scene);
+	ED_render_id_flush_update(G.main, ob->data);
 
 	if(enter_editmode)
 		ED_object_enter_editmode(C, EM_IGNORE_LAYER);
@@ -1628,13 +1630,16 @@
 Base *ED_object_add_duplicate(Scene *scene, Base *base, int dupflag)
 {
 	Base *basen;
+	Object *ob;
 
 	clear_id_newpoins();
 	clear_sca_new_poins();	/* sensor/contr/act */
 	
 	basen= object_add_duplicate_internal(scene, base, dupflag);
+	ob= basen->object;
 	
 	DAG_scene_sort(scene);
+	ED_render_id_flush_update(G.main, ob->data);
 	
 	return basen;
 }
@@ -1660,6 +1665,7 @@
 		if(BASACT==base)
 			ED_base_object_activate(C, basen);
 		
+		ED_render_id_flush_update(G.main, basen->object->data);
 	}
 	CTX_DATA_END;
 

Modified: trunk/blender/source/blender/makesrna/intern/rna_lamp.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_lamp.c	2010-02-13 13:38:10 UTC (rev 26869)
+++ trunk/blender/source/blender/makesrna/intern/rna_lamp.c	2010-02-13 13:49:27 UTC (rev 26870)
@@ -107,7 +107,10 @@
 	Lamp *la= ptr->id.data;
 
 	DAG_id_flush_update(&la->id, 0);
-	WM_main_add_notifier(NC_LAMP|ND_LIGHTING, la);
+	if(scene->gm.matmode == GAME_MAT_GLSL)
+		WM_main_add_notifier(NC_LAMP|ND_LIGHTING_DRAW, la);
+	else
+		WM_main_add_notifier(NC_LAMP|ND_LIGHTING, la);
 }
 
 static void rna_Lamp_draw_update(Main *bmain, Scene *scene, PointerRNA *ptr)
@@ -350,13 +353,13 @@
 	prop= RNA_def_property(srna, "energy", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_ui_range(prop, 0, 10.0, 10, 2);
 	RNA_def_property_ui_text(prop, "Energy", "Amount of light that the lamp emits");
-	RNA_def_property_update(prop, 0, "rna_Lamp_update");
+	RNA_def_property_update(prop, 0, "rna_Lamp_draw_update");
 
 	prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
 	RNA_def_property_float_sdna(prop, NULL, "r");
 	RNA_def_property_array(prop, 3);
 	RNA_def_property_ui_text(prop, "Color", "Light color");
-	RNA_def_property_update(prop, 0, "rna_Lamp_update");
+	RNA_def_property_update(prop, 0, "rna_Lamp_draw_update");
 
 	prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "mode", LA_LAYER);
@@ -417,13 +420,13 @@
 	RNA_def_property_float_sdna(prop, NULL, "att1");
 	RNA_def_property_range(prop, 0.0f, 1.0f);
 	RNA_def_property_ui_text(prop, "Linear Attenuation", "Linear distance attentuation");
-	RNA_def_property_update(prop, 0, "rna_Lamp_update");
+	RNA_def_property_update(prop, 0, "rna_Lamp_draw_update");
 
 	prop= RNA_def_property(srna, "quadratic_attenuation", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_sdna(prop, NULL, "att2");
 	RNA_def_property_range(prop, 0.0f, 1.0f);
 	RNA_def_property_ui_text(prop, "Quadratic Attenuation", "Quadratic distance attentuation");
-	RNA_def_property_update(prop, 0, "rna_Lamp_update");
+	RNA_def_property_update(prop, 0, "rna_Lamp_draw_update");
 }
 
 static void rna_def_lamp_shadow(StructRNA *srna, int spot, int area)

Modified: trunk/blender/source/blender/makesrna/intern/rna_material.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_material.c	2010-02-13 13:38:10 UTC (rev 26869)
+++ trunk/blender/source/blender/makesrna/intern/rna_material.c	2010-02-13 13:49:27 UTC (rev 26870)
@@ -69,7 +69,10 @@
 	Material *ma= ptr->id.data;
 
 	DAG_id_flush_update(&ma->id, 0);
-	WM_main_add_notifier(NC_MATERIAL|ND_SHADING, ma);
+	if(scene->gm.matmode == GAME_MAT_GLSL)
+		WM_main_add_notifier(NC_MATERIAL|ND_SHADING_DRAW, ma);
+	else
+		WM_main_add_notifier(NC_MATERIAL|ND_SHADING, ma);
 }
 
 static void rna_Material_draw_update(Main *bmain, Scene *scene, PointerRNA *ptr)





More information about the Bf-blender-cvs mailing list