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. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs