diff options
author | Campbell Barton <ideasman42@gmail.com> | 2014-02-17 12:29:37 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2014-02-17 12:30:31 +0400 |
commit | 14b9c79483ec5f282dc04a5efe5945653dc0a678 (patch) | |
tree | 85ffb0923de4dd6369033a0a1e842a56e35e52f2 /source | |
parent | 8afd646b18edbb66821dd35ded4c49cf9b436aa1 (diff) |
Fix for another deadlock with py-drivers: BlendData.scene.remove()
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/makesrna/intern/rna_main_api.c | 14 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_screen.c | 4 |
2 files changed, 16 insertions, 2 deletions
diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index 5d0d7bf20df..e0088416883 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -104,6 +104,10 @@ #include "BLF_translation.h" +#ifdef WITH_PYTHON +# include "BPY_extern.h" +#endif + static Camera *rna_Main_cameras_new(Main *bmain, const char *name) { ID *id = BKE_camera_add(bmain, name); @@ -138,7 +142,17 @@ static void rna_Main_scenes_remove(Main *bmain, bContext *C, ReportList *reports { bScreen *sc = CTX_wm_screen(C); if (sc->scene == scene) { + +#ifdef WITH_PYTHON + BPy_BEGIN_ALLOW_THREADS; +#endif + ED_screen_set_scene(C, sc, scene_new); + +#ifdef WITH_PYTHON + BPy_END_ALLOW_THREADS; +#endif + } BKE_scene_unlink(bmain, scene, scene_new); diff --git a/source/blender/makesrna/intern/rna_screen.c b/source/blender/makesrna/intern/rna_screen.c index 5902f3095fc..adea1f641a9 100644 --- a/source/blender/makesrna/intern/rna_screen.c +++ b/source/blender/makesrna/intern/rna_screen.c @@ -81,13 +81,13 @@ static void rna_Screen_scene_update(bContext *C, PointerRNA *ptr) /* exception: must use context so notifier gets to the right window */ if (sc->newscene) { #ifdef WITH_PYTHON - BPy_BEGIN_ALLOW_THREADS; + BPy_BEGIN_ALLOW_THREADS; #endif ED_screen_set_scene(C, sc, sc->newscene); #ifdef WITH_PYTHON - BPy_END_ALLOW_THREADS; + BPy_END_ALLOW_THREADS; #endif WM_event_add_notifier(C, NC_SCENE | ND_SCENEBROWSE, sc->newscene); |