[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28488] trunk/blender/source/blender/ makesrna/intern: pin and driver id pointers were adding user references from rna but not on file load .

Campbell Barton ideasman42 at gmail.com
Wed Apr 28 13:05:13 CEST 2010


Revision: 28488
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28488
Author:   campbellbarton
Date:     2010-04-28 13:05:11 +0200 (Wed, 28 Apr 2010)

Log Message:
-----------
pin and driver id pointers were adding user references from rna but not on file load.
removing a reference to either could remove the object/data from the scene.
use set functions to avoid refcounting.

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_fcurve.c
    trunk/blender/source/blender/makesrna/intern/rna_space.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_fcurve.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_fcurve.c	2010-04-28 09:29:17 UTC (rev 28487)
+++ trunk/blender/source/blender/makesrna/intern/rna_fcurve.c	2010-04-28 11:05:11 UTC (rev 28488)
@@ -155,6 +155,13 @@
 
 /* ----------- */
 
+/* note: this function exists only to avoid id refcounting */
+static void rna_DriverTarget_id_set(PointerRNA *ptr, PointerRNA value)
+{
+    DriverTarget *dtar= (DriverTarget*)ptr->data;
+    dtar->id= value.data;
+}
+
 static StructRNA *rna_DriverTarget_id_typef(PointerRNA *ptr)
 {
 	DriverTarget *dtar= (DriverTarget*)ptr->data;
@@ -976,7 +983,8 @@
 	RNA_def_property_struct_type(prop, "ID");
 	RNA_def_property_flag(prop, PROP_EDITABLE);
 	RNA_def_property_editable_func(prop, "rna_DriverTarget_id_editable");
-	RNA_def_property_pointer_funcs(prop, NULL, NULL, "rna_DriverTarget_id_typef");
+    /* note: custom set function is ONLY to avoid rna setting a user for this. */
+	RNA_def_property_pointer_funcs(prop, NULL, "rna_DriverTarget_id_set", "rna_DriverTarget_id_typef");
 	RNA_def_property_ui_text(prop, "ID", "ID-block that the specific property used can be found from (id_type property must be set first)");
 	RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data");
 	

Modified: trunk/blender/source/blender/makesrna/intern/rna_space.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_space.c	2010-04-28 09:29:17 UTC (rev 28487)
+++ trunk/blender/source/blender/makesrna/intern/rna_space.c	2010-04-28 11:05:11 UTC (rev 28488)
@@ -492,6 +492,13 @@
 
 /* Space Properties */
 
+/* note: this function exists only to avoid id refcounting */
+static void rna_SpaceProperties_pin_id_set(PointerRNA *ptr, PointerRNA value)
+{
+    SpaceButs *sbuts= (SpaceButs*)(ptr->data);
+    sbuts->pinid= value.data;
+}
+
 static StructRNA *rna_SpaceProperties_pin_id_typef(PointerRNA *ptr)
 {
 	SpaceButs *sbuts= (SpaceButs*)(ptr->data);
@@ -1193,7 +1200,8 @@
 	prop= RNA_def_property(srna, "pin_id", PROP_POINTER, PROP_NONE);
 	RNA_def_property_pointer_sdna(prop, NULL, "pinid");
 	RNA_def_property_struct_type(prop, "ID");
-	RNA_def_property_pointer_funcs(prop, NULL, NULL, "rna_SpaceProperties_pin_id_typef");
+    /* note: custom set function is ONLY to avoid rna setting a user for this. */
+	RNA_def_property_pointer_funcs(prop, NULL, "rna_SpaceProperties_pin_id_set", "rna_SpaceProperties_pin_id_typef");
 	RNA_def_property_flag(prop, PROP_EDITABLE);
 	RNA_def_property_update(prop, NC_SPACE|ND_SPACE_PROPERTIES, NULL);
 





More information about the Bf-blender-cvs mailing list