[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