[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