[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36746] trunk/blender/source/blender: RNA: make mechanism used by operators to keep python instance alive more generic , to be used by render engine later.

Brecht Van Lommel brechtvanlommel at pandora.be
Wed May 18 13:21:11 CEST 2011


Revision: 36746
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36746
Author:   blendix
Date:     2011-05-18 11:21:10 +0000 (Wed, 18 May 2011)
Log Message:
-----------
RNA: make mechanism used by operators to keep python instance alive more generic, to be used by render engine later.

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/RNA_access.h
    trunk/blender/source/blender/makesrna/RNA_define.h
    trunk/blender/source/blender/makesrna/RNA_types.h
    trunk/blender/source/blender/makesrna/intern/makesrna.c
    trunk/blender/source/blender/makesrna/intern/rna_ID.c
    trunk/blender/source/blender/makesrna/intern/rna_access.c
    trunk/blender/source/blender/makesrna/intern/rna_animation.c
    trunk/blender/source/blender/makesrna/intern/rna_define.c
    trunk/blender/source/blender/makesrna/intern/rna_internal_types.h
    trunk/blender/source/blender/makesrna/intern/rna_render.c
    trunk/blender/source/blender/makesrna/intern/rna_ui.c
    trunk/blender/source/blender/makesrna/intern/rna_wm.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-05-18 10:56:26 UTC (rev 36745)
+++ trunk/blender/source/blender/makesrna/RNA_access.h	2011-05-18 11:21:10 UTC (rev 36746)
@@ -31,7 +31,6 @@
 
 #include <stdarg.h>
 
-#include "DNA_listBase.h"
 #include "RNA_types.h"
 
 #ifdef __cplusplus
@@ -40,6 +39,7 @@
 
 struct bContext;
 struct ID;
+struct ListBase;
 struct Main;
 struct ReportList;
 struct Scene;
@@ -611,6 +611,7 @@
 
 StructRegisterFunc RNA_struct_register(StructRNA *type);
 StructUnregisterFunc RNA_struct_unregister(StructRNA *type);
+void **RNA_struct_instance(PointerRNA *ptr);
 
 void *RNA_struct_py_type_get(StructRNA *srna);
 void RNA_struct_py_type_set(StructRNA *srna, void *py_type);

Modified: trunk/blender/source/blender/makesrna/RNA_define.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_define.h	2011-05-18 10:56:26 UTC (rev 36745)
+++ trunk/blender/source/blender/makesrna/RNA_define.h	2011-05-18 11:21:10 UTC (rev 36746)
@@ -60,7 +60,7 @@
 void RNA_def_struct_clear_flag(StructRNA *srna, int flag);
 void RNA_def_struct_refine_func(StructRNA *srna, const char *refine);
 void RNA_def_struct_idprops_func(StructRNA *srna, const char *refine);
-void RNA_def_struct_register_funcs(StructRNA *srna, const char *reg, const char *unreg);
+void RNA_def_struct_register_funcs(StructRNA *srna, const char *reg, const char *unreg, const char *instance);
 void RNA_def_struct_path_func(StructRNA *srna, const char *path);
 void RNA_def_struct_identifier(StructRNA *srna, const char *identifier);
 void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description);

Modified: trunk/blender/source/blender/makesrna/RNA_types.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_types.h	2011-05-18 10:56:26 UTC (rev 36745)
+++ trunk/blender/source/blender/makesrna/RNA_types.h	2011-05-18 11:21:10 UTC (rev 36746)
@@ -333,6 +333,7 @@
 typedef struct StructRNA *(*StructRegisterFunc)(struct Main *bmain, struct ReportList *reports, void *data,
 	const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free);
 typedef void (*StructUnregisterFunc)(struct Main *bmain, struct StructRNA *type);
+typedef void **(*StructInstanceFunc)(PointerRNA *ptr);
 
 typedef struct StructRNA StructRNA;
 

Modified: trunk/blender/source/blender/makesrna/intern/makesrna.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/makesrna.c	2011-05-18 10:56:26 UTC (rev 36745)
+++ trunk/blender/source/blender/makesrna/intern/makesrna.c	2011-05-18 11:21:10 UTC (rev 36746)
@@ -2337,6 +2337,7 @@
 	fprintf(f, "\t%s,\n", rna_function_string(srna->path));
 	fprintf(f, "\t%s,\n", rna_function_string(srna->reg));
 	fprintf(f, "\t%s,\n", rna_function_string(srna->unreg));
+	fprintf(f, "\t%s,\n", rna_function_string(srna->instance));
 	fprintf(f, "\t%s,\n", rna_function_string(srna->idproperties));
 
 	if(srna->reg && !srna->refine) {

Modified: trunk/blender/source/blender/makesrna/intern/rna_ID.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_ID.c	2011-05-18 10:56:26 UTC (rev 36745)
+++ trunk/blender/source/blender/makesrna/intern/rna_ID.c	2011-05-18 11:21:10 UTC (rev 36746)
@@ -384,7 +384,7 @@
 	RNA_def_struct_sdna(srna, "IDPropertyGroup");
 	RNA_def_struct_ui_text(srna, "ID Property Group", "Group of ID properties");
 	RNA_def_struct_idprops_func(srna, "rna_PropertyGroup_idprops");
-	RNA_def_struct_register_funcs(srna, "rna_PropertyGroup_register", "rna_PropertyGroup_unregister");
+	RNA_def_struct_register_funcs(srna, "rna_PropertyGroup_register", "rna_PropertyGroup_unregister", NULL);
 	RNA_def_struct_refine_func(srna, "rna_PropertyGroup_refine");
 
 	/* important so python types can have their name used in list views

Modified: trunk/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_access.c	2011-05-18 10:56:26 UTC (rev 36745)
+++ trunk/blender/source/blender/makesrna/intern/rna_access.c	2011-05-18 11:21:10 UTC (rev 36746)
@@ -681,6 +681,18 @@
 	return NULL;
 }
 
+void **RNA_struct_instance(PointerRNA *ptr)
+{
+	StructRNA *type= ptr->type;
+
+	do {
+		if(type->instance)
+			return type->instance(ptr);
+	} while((type=type->base));
+
+	return NULL;
+}
+
 void *RNA_struct_py_type_get(StructRNA *srna)
 {
 	return srna->py_type;

Modified: trunk/blender/source/blender/makesrna/intern/rna_animation.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_animation.c	2011-05-18 10:56:26 UTC (rev 36745)
+++ trunk/blender/source/blender/makesrna/intern/rna_animation.c	2011-05-18 11:21:10 UTC (rev 36746)
@@ -509,7 +509,7 @@
 	RNA_def_struct_sdna(srna, "KeyingSetInfo");
 	RNA_def_struct_ui_text(srna, "Keying Set Info", "Callback function defines for builtin Keying Sets");
 	RNA_def_struct_refine_func(srna, "rna_KeyingSetInfo_refine");
-	RNA_def_struct_register_funcs(srna, "rna_KeyingSetInfo_register", "rna_KeyingSetInfo_unregister");
+	RNA_def_struct_register_funcs(srna, "rna_KeyingSetInfo_register", "rna_KeyingSetInfo_unregister", NULL);
 	
 	/* Properties --------------------- */
 	

Modified: trunk/blender/source/blender/makesrna/intern/rna_define.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_define.c	2011-05-18 10:56:26 UTC (rev 36745)
+++ trunk/blender/source/blender/makesrna/intern/rna_define.c	2011-05-18 11:21:10 UTC (rev 36746)
@@ -813,7 +813,7 @@
 	if(idproperties) srna->idproperties= (IDPropertiesFunc)idproperties;
 }
 
-void RNA_def_struct_register_funcs(StructRNA *srna, const char *reg, const char *unreg)
+void RNA_def_struct_register_funcs(StructRNA *srna, const char *reg, const char *unreg, const char *instance)
 {
 	if(!DefRNA.preprocess) {
 		fprintf(stderr, "RNA_def_struct_register_funcs: only during preprocessing.\n");
@@ -822,6 +822,7 @@
 
 	if(reg) srna->reg= (StructRegisterFunc)reg;
 	if(unreg) srna->unreg= (StructUnregisterFunc)unreg;
+	if(instance) srna->instance= (StructInstanceFunc)instance;
 }
 
 void RNA_def_struct_path_func(StructRNA *srna, const char *path)

Modified: trunk/blender/source/blender/makesrna/intern/rna_internal_types.h
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_internal_types.h	2011-05-18 10:56:26 UTC (rev 36745)
+++ trunk/blender/source/blender/makesrna/intern/rna_internal_types.h	2011-05-18 11:21:10 UTC (rev 36746)
@@ -330,6 +330,7 @@
 	/* function to register/unregister subclasses */
 	StructRegisterFunc reg; 
 	StructUnregisterFunc unreg; 
+	StructInstanceFunc instance;
 
 	/* callback to get id properties */
 	IDPropertiesFunc idproperties;

Modified: trunk/blender/source/blender/makesrna/intern/rna_render.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_render.c	2011-05-18 10:56:26 UTC (rev 36745)
+++ trunk/blender/source/blender/makesrna/intern/rna_render.c	2011-05-18 11:21:10 UTC (rev 36746)
@@ -233,7 +233,7 @@
 	RNA_def_struct_sdna(srna, "RenderEngine");
 	RNA_def_struct_ui_text(srna, "Render Engine", "Render engine");
 	RNA_def_struct_refine_func(srna, "rna_RenderEngine_refine");
-	RNA_def_struct_register_funcs(srna, "rna_RenderEngine_register", "rna_RenderEngine_unregister");
+	RNA_def_struct_register_funcs(srna, "rna_RenderEngine_register", "rna_RenderEngine_unregister", NULL);
 
 	/* render */
 	func= RNA_def_function(srna, "render", NULL);

Modified: trunk/blender/source/blender/makesrna/intern/rna_ui.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_ui.c	2011-05-18 10:56:26 UTC (rev 36745)
+++ trunk/blender/source/blender/makesrna/intern/rna_ui.c	2011-05-18 11:21:10 UTC (rev 36746)
@@ -611,7 +611,7 @@
 	RNA_def_struct_ui_text(srna, "Panel", "Panel containing UI elements");
 	RNA_def_struct_sdna(srna, "Panel");
 	RNA_def_struct_refine_func(srna, "rna_Panel_refine");
-	RNA_def_struct_register_funcs(srna, "rna_Panel_register", "rna_Panel_unregister");
+	RNA_def_struct_register_funcs(srna, "rna_Panel_register", "rna_Panel_unregister", NULL);
 
 	/* poll */
 	func= RNA_def_function(srna, "poll", NULL);
@@ -688,7 +688,7 @@
 	RNA_def_struct_ui_text(srna, "Header", "Editor header containing UI elements.");
 	RNA_def_struct_sdna(srna, "Header");
 	RNA_def_struct_refine_func(srna, "rna_Header_refine");
-	RNA_def_struct_register_funcs(srna, "rna_Header_register", "rna_Header_unregister");
+	RNA_def_struct_register_funcs(srna, "rna_Header_register", "rna_Header_unregister", NULL);
 
 	/* draw */
 	func= RNA_def_function(srna, "draw", NULL);
@@ -730,7 +730,7 @@
 	RNA_def_struct_ui_text(srna, "Menu", "Editor menu containing buttons");
 	RNA_def_struct_sdna(srna, "Menu");
 	RNA_def_struct_refine_func(srna, "rna_Menu_refine");
-	RNA_def_struct_register_funcs(srna, "rna_Menu_register", "rna_Menu_unregister");
+	RNA_def_struct_register_funcs(srna, "rna_Menu_register", "rna_Menu_unregister", NULL);
 
 	/* poll */
 	func= RNA_def_function(srna, "poll", NULL);

Modified: trunk/blender/source/blender/makesrna/intern/rna_wm.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_wm.c	2011-05-18 10:56:26 UTC (rev 36745)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm.c	2011-05-18 11:21:10 UTC (rev 36746)
@@ -961,6 +961,11 @@
 	return dummyot.ext.srna;
 }
 
+void **rna_Operator_instance(PointerRNA *ptr)
+{
+	wmOperator *op = ptr->data;
+	return &op->py_instance;
+}
 
 static StructRNA *rna_MacroOperator_register(Main *bmain, ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free)
 {
@@ -1160,7 +1165,7 @@
 	RNA_def_struct_sdna(srna, "wmOperator");
 	RNA_def_struct_refine_func(srna, "rna_Operator_refine");
 #ifdef WITH_PYTHON

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list