瀏覽代碼

deps/obs-scripting: Prevent python unload more than once

jp9000 7 年之前
父節點
當前提交
a6c65cdbf3
共有 1 個文件被更改,包括 9 次插入0 次删除
  1. 9 0
      deps/obs-scripting/obs-scripting-python.c

+ 9 - 0
deps/obs-scripting/obs-scripting-python.c

@@ -1595,6 +1595,8 @@ void obs_python_load(void)
 
 extern void add_python_frontend_funcs(PyObject *module);
 
+static bool python_loaded_at_all = false;
+
 bool obs_scripting_load_python(const char *python_path)
 {
 	if (python_loaded)
@@ -1696,6 +1698,8 @@ out:
 		obs_python_unload();
 	}
 
+	python_loaded_at_all = success;
+
 	if (python_loaded)
 		obs_add_tick_callback(python_tick, NULL);
 
@@ -1704,6 +1708,9 @@ out:
 
 void obs_python_unload(void)
 {
+	if (!python_loaded_at_all)
+		return;
+
 	if (python_loaded && Py_IsInitialized()) {
 		PyGILState_Ensure();
 
@@ -1722,4 +1729,6 @@ void obs_python_unload(void)
 	pthread_mutex_destroy(&tick_mutex);
 	pthread_mutex_destroy(&timer_mutex);
 	dstr_free(&cur_py_log_chunk);
+
+	python_loaded_at_all = false;
 }