diff --git a/direct/src/distributed/cConnectionRepository.cxx b/direct/src/distributed/cConnectionRepository.cxx index 16aea6e8dd..f04f280936 100644 --- a/direct/src/distributed/cConnectionRepository.cxx +++ b/direct/src/distributed/cConnectionRepository.cxx @@ -693,11 +693,7 @@ handle_update_field() { PyObject_GetAttrString(_python_repository, "doId2do"); nassertr(doId2do != nullptr, false); - #ifdef USE_PYTHON_2_2_OR_EARLIER - PyObject *doId = PyInt_FromLong(do_id); - #else PyObject *doId = PyLong_FromUnsignedLong(do_id); - #endif PyObject *distobj = PyDict_GetItem(doId2do, doId); Py_DECREF(doId); Py_DECREF(doId2do); @@ -784,11 +780,7 @@ handle_update_field_owner() { PyObject_GetAttrString(_python_repository, "doId2ownerView"); nassertr(doId2ownerView != nullptr, false); - #ifdef USE_PYTHON_2_2_OR_EARLIER - PyObject *doId = PyInt_FromLong(do_id); - #else PyObject *doId = PyLong_FromUnsignedLong(do_id); - #endif // pass the update to the owner view first PyObject *distobjOV = PyDict_GetItem(doId2ownerView, doId); @@ -893,7 +885,7 @@ describe_message(std::ostream &out, const string &prefix, packer.set_unpack_data((const char *)dg.get_data(), dg.get_length(), false); CHANNEL_TYPE do_id; - int msg_type; + unsigned int msg_type; bool is_update = false; string full_prefix = "CR::" + prefix; @@ -919,7 +911,12 @@ describe_message(std::ostream &out, const string &prefix, #ifdef HAVE_PYTHON if (_python_repository != nullptr) { - PyObject *msgId = PyLong_FromLong(msg_type); +#if defined(HAVE_THREADS) && !defined(SIMPLE_THREADS) + PyGILState_STATE gstate; + gstate = PyGILState_Ensure(); +#endif + + PyObject *msgId = PyLong_FromUnsignedLong(msg_type); nassertv(msgId != nullptr); #if PY_MAJOR_VERSION >= 3 PyObject *methodName = PyUnicode_FromString("_getMsgName"); @@ -941,6 +938,10 @@ describe_message(std::ostream &out, const string &prefix, Py_DECREF(methodName); Py_DECREF(msgId); Py_DECREF(result); + +#if defined(HAVE_THREADS) && !defined(SIMPLE_THREADS) + PyGILState_Release(gstate); +#endif } #endif if (msgName.length() == 0) { @@ -959,15 +960,16 @@ describe_message(std::ostream &out, const string &prefix, #ifdef HAVE_PYTHON if (_python_repository != nullptr) { +#if defined(HAVE_THREADS) && !defined(SIMPLE_THREADS) + PyGILState_STATE gstate; + gstate = PyGILState_Ensure(); +#endif + PyObject *doId2do = PyObject_GetAttrString(_python_repository, "doId2do"); nassertv(doId2do != nullptr); - #ifdef USE_PYTHON_2_2_OR_EARLIER - PyObject *doId = PyInt_FromLong(do_id); - #else PyObject *doId = PyLong_FromUnsignedLong(do_id); - #endif PyObject *distobj = PyDict_GetItem(doId2do, doId); Py_DECREF(doId); Py_DECREF(doId2do); @@ -983,6 +985,10 @@ describe_message(std::ostream &out, const string &prefix, dclass = (DCClass *)PyLong_AsVoidPtr(dclass_this); Py_DECREF(dclass_this); } + +#if defined(HAVE_THREADS) && !defined(SIMPLE_THREADS) + PyGILState_Release(gstate); +#endif } #endif // HAVE_PYTHON