[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34484] trunk/blender/source/blender: improve unregister error check not to loop over parent classes properties (would check the same property multiple times)
Campbell Barton
ideasman42 at gmail.com
Tue Jan 25 08:31:12 CET 2011
Revision: 34484
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34484
Author: campbellbarton
Date: 2011-01-25 07:31:11 +0000 (Tue, 25 Jan 2011)
Log Message:
-----------
improve unregister error check not to loop over parent classes properties (would check the same property multiple times)
Modified Paths:
--------------
trunk/blender/source/blender/makesrna/RNA_access.h
trunk/blender/source/blender/makesrna/intern/rna_access.c
trunk/blender/source/blender/python/intern/bpy_rna.c
Modified: trunk/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_access.h 2011-01-25 06:54:57 UTC (rev 34483)
+++ trunk/blender/source/blender/makesrna/RNA_access.h 2011-01-25 07:31:11 UTC (rev 34484)
@@ -623,7 +623,7 @@
PropertyRNA *RNA_struct_type_find_property(StructRNA *srna, const char *identifier);
FunctionRNA *RNA_struct_find_function(PointerRNA *ptr, const char *identifier);
-const struct ListBase *RNA_struct_defined_functions(StructRNA *srna);
+const struct ListBase *RNA_struct_type_functions(StructRNA *srna);
char *RNA_struct_name_get_alloc(PointerRNA *ptr, char *fixedbuf, int fixedlen);
Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c 2011-01-25 06:54:57 UTC (rev 34483)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c 2011-01-25 07:31:11 UTC (rev 34484)
@@ -616,7 +616,7 @@
#endif
}
-const struct ListBase *RNA_struct_defined_functions(StructRNA *srna)
+const struct ListBase *RNA_struct_type_functions(StructRNA *srna)
{
return &srna->functions;
}
Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c 2011-01-25 06:54:57 UTC (rev 34483)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c 2011-01-25 07:31:11 UTC (rev 34484)
@@ -5166,7 +5166,7 @@
}
/* verify callback functions */
- lb= RNA_struct_defined_functions(srna);
+ lb= RNA_struct_type_functions(srna);
i= 0;
for(link=lb->first; link; link=link->next) {
func= (FunctionRNA*)link;
@@ -5668,26 +5668,25 @@
static int pyrna_srna_contains_pointer_prop_srna(StructRNA *srna_props, StructRNA *srna, const char **prop_identifier)
{
- PointerRNA tptr;
- PropertyRNA *iterprop;
- RNA_pointer_create(NULL, &RNA_Struct, srna_props, &tptr);
-
- iterprop= RNA_struct_find_property(&tptr, "properties");
+ PropertyRNA *prop;
+ LinkData *link;
- RNA_PROP_BEGIN(&tptr, itemptr, iterprop) {
- PropertyRNA *prop= itemptr.data;
- if(RNA_property_type(prop) == PROP_POINTER) {
- if (strcmp(RNA_property_identifier(prop), "rna_type") == 0) {
- /* pass */
- }
- else if(RNA_property_pointer_type(&tptr, prop) == srna) {
+ /* verify properties */
+ const ListBase *lb= RNA_struct_type_properties(srna);
+
+ for(link=lb->first; link; link=link->next) {
+ prop= (PropertyRNA*)link;
+ if(RNA_property_type(prop) == PROP_POINTER && !(RNA_property_flag(prop) & PROP_BUILTIN)) {
+ PointerRNA tptr;
+ RNA_pointer_create(NULL, &RNA_Struct, srna_props, &tptr);
+
+ if(RNA_property_pointer_type(&tptr, prop) == srna) {
*prop_identifier= RNA_property_identifier(prop);
return 1;
}
}
}
- RNA_PROP_END;
-
+
return 0;
}
More information about the Bf-blender-cvs
mailing list