[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33524] trunk/blender/source/blender: pass along the context to extension functions, this was already being done in all cases except for the render engine.

Campbell Barton ideasman42 at gmail.com
Wed Dec 8 04:27:01 CET 2010


Hi Doug,

I was hoping to be able to make script execution work by having each
script caller set the context on entering and clear on exit.
But this isn't compatible with render engines which run in a thread
which conflicts with the blender UI which is running at the same time.
So from what I can tell we'd need to have a context per thread?

At the moment there is only one context so setting it once and just
assuming its always valid works ok but was trying to make this easier
to extend later on.

Made this work as it used to with XXX comment, r33545.

On Tue, Dec 7, 2010 at 7:36 PM, Doug Hammond
<doughammond at hamsterfight.co.uk> wrote:
> The LuxRender addon is broken after this commit. When starting the render,
> blender fails with:
> "Python context called with a NULL Context. this should not happen!"
>
>
> Cheers,
> Doug.
>
>
> On 7 December 2010 04:12, Campbell Barton <ideasman42 at gmail.com> wrote:
>
>> Revision: 33524
>>
>> http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33524
>> Author:   campbellbarton
>> Date:     2010-12-07 05:12:15 +0100 (Tue, 07 Dec 2010)
>>
>> Log Message:
>> -----------
>> pass along the context to extension functions, this was already being done
>> in all cases except for the render engine.
>>
>> this allows python to NULL its internal context while scripts are not
>> running.
>>
>> Modified Paths:
>> --------------
>>    trunk/blender/source/blender/blenkernel/BKE_context.h
>>    trunk/blender/source/blender/blenkernel/intern/context.c
>>    trunk/blender/source/blender/makesrna/RNA_types.h
>>    trunk/blender/source/blender/makesrna/intern/rna_animation.c
>>    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.c
>>    trunk/blender/source/blender/python/intern/bpy_operator.c
>>    trunk/blender/source/blender/python/intern/bpy_rna.c
>>
>> Modified: trunk/blender/source/blender/blenkernel/BKE_context.h
>> ===================================================================
>> --- trunk/blender/source/blender/blenkernel/BKE_context.h       2010-12-07
>> 01:56:32 UTC (rev 33523)
>> +++ trunk/blender/source/blender/blenkernel/BKE_context.h       2010-12-07
>> 04:12:15 UTC (rev 33524)
>> @@ -124,7 +124,7 @@
>>  int CTX_py_init_get(bContext *C);
>>  void CTX_py_init_set(bContext *C, int value);
>>
>> -void *CTX_py_dict_get(bContext *C);
>> +void *CTX_py_dict_get(const bContext *C);
>>  void CTX_py_dict_set(bContext *C, void *value);
>>
>>  /* Window Manager Context */
>>
>> Modified: trunk/blender/source/blender/blenkernel/intern/context.c
>> ===================================================================
>> --- trunk/blender/source/blender/blenkernel/intern/context.c    2010-12-07
>> 01:56:32 UTC (rev 33523)
>> +++ trunk/blender/source/blender/blenkernel/intern/context.c    2010-12-07
>> 04:12:15 UTC (rev 33524)
>> @@ -179,7 +179,7 @@
>>        C->data.py_init= value;
>>  }
>>
>> -void *CTX_py_dict_get(bContext *C)
>> +void *CTX_py_dict_get(const bContext *C)
>>  {
>>        return C->data.py_context;
>>  }
>>
>> Modified: trunk/blender/source/blender/makesrna/RNA_types.h
>> ===================================================================
>> --- trunk/blender/source/blender/makesrna/RNA_types.h   2010-12-07 01:56:32
>> UTC (rev 33523)
>> +++ trunk/blender/source/blender/makesrna/RNA_types.h   2010-12-07 04:12:15
>> UTC (rev 33524)
>> @@ -311,9 +311,9 @@
>>  } StructFlag;
>>
>>  typedef int (*StructValidateFunc)(struct PointerRNA *ptr, void *data, int
>> *have_function);
>> -typedef int (*StructCallbackFunc)(struct PointerRNA *ptr, struct
>> FunctionRNA *func, ParameterList *list);
>> +typedef int (*StructCallbackFunc)(struct bContext *C, struct PointerRNA
>> *ptr, struct FunctionRNA *func, ParameterList *list);
>>  typedef void (*StructFreeFunc)(void *data);
>> -typedef struct StructRNA *(*StructRegisterFunc)(const struct bContext *C,
>> struct ReportList *reports, void *data,
>> +typedef struct StructRNA *(*StructRegisterFunc)(struct bContext *C, struct
>> ReportList *reports, void *data,
>>        const char *identifier, StructValidateFunc validate,
>> StructCallbackFunc call, StructFreeFunc free);
>>  typedef void (*StructUnregisterFunc)(const struct bContext *C, struct
>> StructRNA *type);
>>
>> @@ -333,9 +333,9 @@
>>  typedef struct ExtensionRNA {
>>        void *data;
>>        StructRNA *srna;
>> -
>> -       int (*call)(PointerRNA *, FunctionRNA *, ParameterList *);
>> -       void (*free)(void *data);
>> +       StructCallbackFunc call;
>> +       StructFreeFunc free;
>> +
>>  } ExtensionRNA;
>>
>>  /* fake struct definitions, needed otherwise collections end up owning the
>> C
>>
>> Modified: trunk/blender/source/blender/makesrna/intern/rna_animation.c
>> ===================================================================
>> --- trunk/blender/source/blender/makesrna/intern/rna_animation.c
>>  2010-12-07 01:56:32 UTC (rev 33523)
>> +++ trunk/blender/source/blender/makesrna/intern/rna_animation.c
>>  2010-12-07 04:12:15 UTC (rev 33524)
>> @@ -80,7 +80,7 @@
>>                RNA_parameter_set_lookup(&list, "context", &C);
>>
>>                /* execute the function */
>> -               ksi->ext.call(&ptr, func, &list);
>> +               ksi->ext.call(C, &ptr, func, &list);
>>
>>                /* read the result */
>>                RNA_parameter_get_lookup(&list, "ok", &ret);
>> @@ -107,7 +107,7 @@
>>                RNA_parameter_set_lookup(&list, "ks", &ks);
>>
>>                /* execute the function */
>> -               ksi->ext.call(&ptr, func, &list);
>> +               ksi->ext.call(C, &ptr, func, &list);
>>        RNA_parameter_list_free(&list);
>>  }
>>
>> @@ -129,7 +129,7 @@
>>                RNA_parameter_set_lookup(&list, "data", data);
>>
>>                /* execute the function */
>> -               ksi->ext.call(&ptr, func, &list);
>> +               ksi->ext.call(C, &ptr, func, &list);
>>        RNA_parameter_list_free(&list);
>>  }
>>
>>
>> Modified: trunk/blender/source/blender/makesrna/intern/rna_render.c
>> ===================================================================
>> --- trunk/blender/source/blender/makesrna/intern/rna_render.c   2010-12-07
>> 01:56:32 UTC (rev 33523)
>> +++ trunk/blender/source/blender/makesrna/intern/rna_render.c   2010-12-07
>> 04:12:15 UTC (rev 33524)
>> @@ -91,7 +91,7 @@
>>
>>        RNA_parameter_list_create(&list, &ptr, func);
>>        RNA_parameter_set_lookup(&list, "scene", &scene);
>> -       engine->type->ext.call(&ptr, func, &list);
>> +       engine->type->ext.call(NULL, &ptr, func, &list);
>>
>>        RNA_parameter_list_free(&list);
>>  }
>>
>> Modified: trunk/blender/source/blender/makesrna/intern/rna_ui.c
>> ===================================================================
>> --- trunk/blender/source/blender/makesrna/intern/rna_ui.c       2010-12-07
>> 01:56:32 UTC (rev 33523)
>> +++ trunk/blender/source/blender/makesrna/intern/rna_ui.c       2010-12-07
>> 04:12:15 UTC (rev 33524)
>> @@ -101,7 +101,7 @@
>>
>>        RNA_parameter_list_create(&list, &ptr, func);
>>        RNA_parameter_set_lookup(&list, "context", &C);
>> -       pt->ext.call(&ptr, func, &list);
>> +       pt->ext.call((bContext *)C, &ptr, func, &list);
>>
>>        RNA_parameter_get_lookup(&list, "visible", &ret);
>>        visible= *(int*)ret;
>> @@ -122,7 +122,7 @@
>>
>>        RNA_parameter_list_create(&list, &ptr, func);
>>        RNA_parameter_set_lookup(&list, "context", &C);
>> -       pnl->type->ext.call(&ptr, func, &list);
>> +       pnl->type->ext.call((bContext *)C, &ptr, func, &list);
>>
>>        RNA_parameter_list_free(&list);
>>  }
>> @@ -138,7 +138,7 @@
>>
>>        RNA_parameter_list_create(&list, &ptr, func);
>>        RNA_parameter_set_lookup(&list, "context", &C);
>> -       pnl->type->ext.call(&ptr, func, &list);
>> +       pnl->type->ext.call((bContext *)C, &ptr, func, &list);
>>
>>        RNA_parameter_list_free(&list);
>>  }
>> @@ -163,7 +163,7 @@
>>                WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL);
>>  }
>>
>> -static StructRNA *rna_Panel_register(const bContext *C, ReportList
>> *reports, void *data, const char *identifier, StructValidateFunc validate,
>> StructCallbackFunc call, StructFreeFunc free)
>> +static StructRNA *rna_Panel_register(bContext *C, ReportList *reports,
>> void *data, const char *identifier, StructValidateFunc validate,
>> StructCallbackFunc call, StructFreeFunc free)
>>  {
>>        ARegionType *art;
>>        PanelType *pt, dummypt = {0};
>> @@ -241,7 +241,7 @@
>>
>>        RNA_parameter_list_create(&list, &htr, func);
>>        RNA_parameter_set_lookup(&list, "context", &C);
>> -       hdr->type->ext.call(&htr, func, &list);
>> +       hdr->type->ext.call((bContext *)C, &htr, func, &list);
>>
>>        RNA_parameter_list_free(&list);
>>  }
>> @@ -266,7 +266,7 @@
>>                WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL);
>>  }
>>
>> -static StructRNA *rna_Header_register(const bContext *C, ReportList
>> *reports, void *data, const char *identifier, StructValidateFunc validate,
>> StructCallbackFunc call, StructFreeFunc free)
>> +static StructRNA *rna_Header_register(bContext *C, ReportList *reports,
>> void *data, const char *identifier, StructValidateFunc validate,
>> StructCallbackFunc call, StructFreeFunc free)
>>  {
>>        ARegionType *art;
>>        HeaderType *ht, dummyht = {0};
>> @@ -341,7 +341,7 @@
>>
>>        RNA_parameter_list_create(&list, &ptr, func);
>>        RNA_parameter_set_lookup(&list, "context", &C);
>> -       pt->ext.call(&ptr, func, &list);
>> +       pt->ext.call((bContext *)C, &ptr, func, &list);
>>
>>        RNA_parameter_get_lookup(&list, "visible", &ret);
>>        visible= *(int*)ret;
>> @@ -362,7 +362,7 @@
>>
>>        RNA_parameter_list_create(&list, &mtr, func);
>>        RNA_parameter_set_lookup(&list, "context", &C);
>> -       hdr->type->ext.call(&mtr, func, &list);
>> +       hdr->type->ext.call((bContext *)C, &mtr, func, &list);
>>
>>        RNA_parameter_list_free(&list);
>>  }
>> @@ -385,7 +385,7 @@
>>                WM_main_add_notifier(NC_SCREEN|NA_EDITED, NULL);
>>  }
>>
>> -static StructRNA *rna_Menu_register(const bContext *C, ReportList
>> *reports, void *data, const char *identifier, StructValidateFunc validate,
>> StructCallbackFunc call, StructFreeFunc free)
>> +static StructRNA *rna_Menu_register(bContext *C, ReportList *reports, void
>> *data, const char *identifier, StructValidateFunc validate,
>> StructCallbackFunc call, StructFreeFunc free)
>>  {
>>        MenuType *mt, dummymt = {0};
>>        Menu dummymenu= {0};
>>
>> Modified: trunk/blender/source/blender/makesrna/intern/rna_wm.c
>> ===================================================================
>> --- trunk/blender/source/blender/makesrna/intern/rna_wm.c       2010-12-07
>> 01:56:32 UTC (rev 33523)
>> +++ trunk/blender/source/blender/makesrna/intern/rna_wm.c       2010-12-07
>> 04:12:15 UTC (rev 33524)
>> @@ -693,7 +693,7 @@
>>
>>        RNA_parameter_list_create(&list, &ptr, func);
>>        RNA_parameter_set_lookup(&list, "context", &C);
>> -       ot->ext.call(&ptr, func, &list);
>> +       ot->ext.call(C, &ptr, func, &list);
>>
>>        RNA_parameter_get_lookup(&list, "visible", &ret);
>>        visible= *(int*)ret;
>> @@ -716,7 +716,7 @@
>>
>>        RNA_parameter_list_create(&list, &opr, func);
>>        RNA_parameter_set_lookup(&list, "context", &C);
>> -       op->type->ext.call(&opr, func, &list);
>> +       op->type->ext.call(C, &opr, func, &list);
>>
>>        RNA_parameter_get_lookup(&list, "result", &ret);
>>        result= *(int*)ret;
>> @@ -740,7 +740,7 @@
>>
>>        RNA_parameter_list_create(&list, &opr, func);
>>        RNA_parameter_set_lookup(&list, "context", &C);
>> -       op->type->ext.call(&opr, func, &list);
>> +       op->type->ext.call(C, &opr, func, &list);
>>
>>        RNA_parameter_get_lookup(&list, "result", &ret);
>>        result= *(int*)ret;
>> @@ -764,7 +764,7 @@
>>        RNA_parameter_list_create(&list, &opr, func);
>>        RNA_parameter_set_lookup(&list, "context", &C);
>>        RNA_parameter_set_lookup(&list, "event", &event);
>> -       op->type->ext.call(&opr, func, &list);
>> +       op->type->ext.call(C, &opr, func, &list);
>>
>>        RNA_parameter_get_lookup(&list, "result", &ret);
>>        result= *(int*)ret;
>> @@ -789,7 +789,7 @@
>>        RNA_parameter_list_create(&list, &opr, func);
>>        RNA_parameter_set_lookup(&list, "context", &C);
>>        RNA_parameter_set_lookup(&list, "event", &event);
>> -       op->type->ext.call(&opr, func, &list);
>> +       op->type->ext.call(C, &opr, func, &list);
>>
>>        RNA_parameter_get_lookup(&list, "result", &ret);
>>        result= *(int*)ret;
>> @@ -810,7 +810,7 @@
>>
>>        RNA_parameter_list_create(&list, &opr, func);
>>        RNA_parameter_set_lookup(&list, "context", &C);
>> -       op->type->ext.call(&opr, func, &list);
>> +       op->type->ext.call(C, &opr, func, &list);
>>
>>        RNA_parameter_list_free(&list);
>>  }
>> @@ -894,7 +894,7 @@
>>  }
>>
>>
>> -static StructRNA *rna_MacroOperator_register(const bContext *C, ReportList
>> *reports, void *data, const char *identifier, StructValidateFunc validate,
>> StructCallbackFunc call, StructFreeFunc free)
>> +static StructRNA *rna_MacroOperator_register(bContext *C, ReportList
>> *reports, void *data, const char *identifier, StructValidateFunc validate,
>> StructCallbackFunc call, StructFreeFunc free)
>>  {
>>        wmOperatorType dummyot = {0};
>>        wmOperator dummyop= {0};
>>
>> Modified: trunk/blender/source/blender/python/intern/bpy.c
>> ===================================================================
>> --- trunk/blender/source/blender/python/intern/bpy.c    2010-12-07 01:56:32
>> UTC (rev 33523)
>> +++ trunk/blender/source/blender/python/intern/bpy.c    2010-12-07 04:12:15
>> UTC (rev 33524)
>> @@ -223,7 +223,7 @@
>>
>> @@ Diff output truncated at 10240 characters. @@
>>
>> _______________________________________________
>> Bf-blender-cvs mailing list
>> Bf-blender-cvs at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>



-- 
- Campbell


More information about the Bf-committers mailing list