Fix for another deadlock with py-drivers: BlendData.scene.remove()
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user