From: Robin Dunn Date: Mon, 2 Apr 2001 03:43:04 +0000 (+0000) Subject: wxPython now creates it's own Python thread state instead of using the X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/1112b0c68cd2856de96f86dc569fc4c78f60582d wxPython now creates it's own Python thread state instead of using the one that was active when it starts up. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9632 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/wxPython/src/helpers.cpp b/wxPython/src/helpers.cpp index 28d810873f..d07600f82b 100644 --- a/wxPython/src/helpers.cpp +++ b/wxPython/src/helpers.cpp @@ -122,8 +122,13 @@ void __wxPreStart() #endif #ifdef WXP_WITH_THREAD +#if 0 // OLD THREAD STUFF PyEval_InitThreads(); wxPyEventThreadState = PyThreadState_Get(); +#else + PyEval_InitThreads(); + wxPyEventThreadState = PyThreadState_New(PyThreadState_Get()->interp); +#endif #endif // Bail out if there is already windows created. This means that the @@ -308,11 +313,19 @@ bool wxPyRestoreThread() { // already have the lock. (I hope!) // #ifdef WXP_WITH_THREAD +#if 0 // OLD THREAD STUFF if (wxPyEventThreadState != myPyThreadState_Get()) { PyEval_RestoreThread(wxPyEventThreadState); return TRUE; } else +#else + if (wxPyEventThreadState != myPyThreadState_Get()) { + PyEval_AcquireThread(wxPyEventThreadState); + return TRUE; + } + else +#endif #endif return FALSE; } @@ -320,9 +333,15 @@ bool wxPyRestoreThread() { void wxPySaveThread(bool doSave) { #ifdef WXP_WITH_THREAD +#if 0 // OLD THREAD STUFF if (doSave) { wxPyEventThreadState = PyEval_SaveThread(); } +#else + if (doSave) { + PyEval_ReleaseThread(wxPyEventThreadState); + } +#endif #endif } @@ -988,7 +1007,7 @@ bool wxColour_helper(PyObject* source, wxColour** obj) { // otherwise a string is expected else if (PyString_Check(source)) { wxString spec = PyString_AS_STRING(source); - if (spec[0] == '#' && spec.Length() == 7) { // It's #RRGGBB + if (spec[0U] == '#' && spec.Length() == 7) { // It's #RRGGBB char* junk; int red = strtol(spec.Mid(1,2), &junk, 16); int green = strtol(spec.Mid(3,2), &junk, 16);