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
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-02-17 12:29:37 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-02-17 12:30:31 +0400
commit14b9c79483ec5f282dc04a5efe5945653dc0a678 (patch)
tree85ffb0923de4dd6369033a0a1e842a56e35e52f2 /source
parent8afd646b18edbb66821dd35ded4c49cf9b436aa1 (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.c14
-rw-r--r--source/blender/makesrna/intern/rna_screen.c4
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);