Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2011-08-24 13:44:08 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2011-08-24 13:44:08 +0400
commit29bdf37f9d1a5a45b98aeed15d415df27050615b (patch)
treeb260a2fcb947b76127fd073a335c4f775cdb8d87 /source/blender/python/intern/bpy_interface.c
parentbd38aa51ad029f114813d3d8f5a069571255b211 (diff)
parentf9bffb3ca0ca88a7e774b0ee0da1d384707f0495 (diff)
Cycles: svn merge -r39457:39669 https://svn.blender.org/svnroot/bf-blender/trunk/blender
Diffstat (limited to 'source/blender/python/intern/bpy_interface.c')
-rw-r--r--source/blender/python/intern/bpy_interface.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c
index ea76c4bb377..d5615f5ab2d 100644
--- a/source/blender/python/intern/bpy_interface.c
+++ b/source/blender/python/intern/bpy_interface.c
@@ -87,6 +87,14 @@ static double bpy_timer_run; /* time for each python script run */
static double bpy_timer_run_tot; /* accumulate python runs */
#endif
+/* use for updating while a python script runs - in case of file load */
+void bpy_context_update(bContext *C)
+{
+ BPy_SetContext(C);
+ bpy_import_main_set(CTX_data_main(C));
+ BPY_modules_update(C); /* can give really bad results if this isnt here */
+}
+
void bpy_context_set(bContext *C, PyGILState_STATE *gilstate)
{
py_call_level++;
@@ -95,16 +103,7 @@ void bpy_context_set(bContext *C, PyGILState_STATE *gilstate)
*gilstate= PyGILState_Ensure();
if(py_call_level==1) {
-
- if(C) { // XXX - should always be true.
- BPy_SetContext(C);
- bpy_import_main_set(CTX_data_main(C));
- }
- else {
- fprintf(stderr, "ERROR: Python context called with a NULL Context. this should not happen!\n");
- }
-
- BPY_modules_update(C); /* can give really bad results if this isnt here */
+ bpy_context_update(C);
#ifdef TIME_PY_RUN
if(bpy_timer_count==0) {
@@ -575,6 +574,12 @@ void BPY_modules_load_user(bContext *C)
if(bmain==NULL)
return;
+ /* update pointers since this can run from a nested script
+ * on file load */
+ if(py_call_level) {
+ bpy_context_update(C);
+ }
+
bpy_context_set(C, &gilstate);
for(text=CTX_data_main(C)->text.first; text; text= text->id.next) {