From a397009181c8fa76501f09029d7f308e4961df51 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 13 Feb 2014 06:53:42 +1100 Subject: Fix T38541: sys.exit fails when blender is built as a py-module --- source/blender/python/intern/bpy_interface.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'source/blender/python/intern/bpy_interface.c') diff --git a/source/blender/python/intern/bpy_interface.c b/source/blender/python/intern/bpy_interface.c index aafb5e3d642..a547604cdd6 100644 --- a/source/blender/python/intern/bpy_interface.c +++ b/source/blender/python/intern/bpy_interface.c @@ -361,8 +361,10 @@ void BPY_python_start(int argc, const char **argv) void BPY_python_end(void) { // fprintf(stderr, "Ending Python!\n"); + PyGILState_STATE gilstate; - PyGILState_Ensure(); /* finalizing, no need to grab the state */ + /* finalizing, no need to grab the state, except when we are a module */ + gilstate = PyGILState_Ensure(); /* free other python data. */ pyrna_free_types(); @@ -373,10 +375,12 @@ void BPY_python_end(void) #ifndef WITH_PYTHON_MODULE BPY_atexit_unregister(); /* without this we get recursive calls to WM_exit */ -#endif Py_Finalize(); - +#else + PyGILState_Release(gilstate); +#endif + #ifdef TIME_PY_RUN /* measure time since py started */ bpy_timer = PIL_check_seconds_timer() - bpy_timer; -- cgit v1.2.3