forked from bartvdbraak/blender
Fix T38664: Blender hang when change scene from script
Deadlock between python script evaluation thread and drivers evaluation caused by scene update invoked from ED_screen_set_scene(). Pretty much the same as setting scene current frame with the same solution BPy_{BEGIN,END}_ALLOW_THREADS.
This commit is contained in:
parent
4134bdc75c
commit
1562fd99f1
@ -60,6 +60,10 @@ EnumPropertyItem region_type_items[] = {
|
||||
|
||||
#include "UI_view2d.h"
|
||||
|
||||
#ifdef WITH_PYTHON
|
||||
# include "BPY_extern.h"
|
||||
#endif
|
||||
|
||||
static void rna_Screen_scene_set(PointerRNA *ptr, PointerRNA value)
|
||||
{
|
||||
bScreen *sc = (bScreen *)ptr->data;
|
||||
@ -76,7 +80,16 @@ 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;
|
||||
#endif
|
||||
|
||||
ED_screen_set_scene(C, sc, sc->newscene);
|
||||
|
||||
#ifdef WITH_PYTHON
|
||||
BPy_END_ALLOW_THREADS;
|
||||
#endif
|
||||
|
||||
WM_event_add_notifier(C, NC_SCENE | ND_SCENEBROWSE, sc->newscene);
|
||||
|
||||
if (G.debug & G_DEBUG)
|
||||
|
Loading…
Reference in New Issue
Block a user