24 #ifndef PXR_BASE_TF_PY_LOCK_H
25 #define PXR_BASE_TF_PY_LOCK_H
29 #ifdef PXR_PYTHON_SUPPORT_ENABLED
33 #include "pxr/base/tf/api.h"
35 PXR_NAMESPACE_OPEN_SCOPE
131 TF_API
void Acquire();
134 TF_API
void Release();
139 TF_API
void BeginAllowThreads();
143 TF_API
void EndAllowThreads();
147 friend struct TfPyEnsureGILUnlockedObj;
148 enum _UnlockedTag { _ConstructUnlocked };
149 explicit TfPyLock(_UnlockedTag);
151 PyGILState_STATE _gilState;
152 PyThreadState *_savedState;
154 bool _allowingThreads:1;
158 struct TfPyEnsureGILUnlockedObj
162 TF_API TfPyEnsureGILUnlockedObj();
190 #define TF_PY_ALLOW_THREADS_IN_SCOPE() \
191 TfPyEnsureGILUnlockedObj __py_lock_allow_threads__
193 PXR_NAMESPACE_CLOSE_SCOPE
198 #define TF_PY_ALLOW_THREADS_IN_SCOPE()
200 #endif // PXR_PYTHON_SUPPORT_ENABLED
202 #endif // PXR_BASE_TF_PY_LOCK_H
Intended to replace a direct include of Python.h, which causes several build problems with certain co...