]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/helpers.cpp
wxX11:
[wxWidgets.git] / wxPython / src / helpers.cpp
index 6a196331a39b8e4aa7aee0973f53e43971c24259..340c740037478fa4367ec95e01e4c53c3dc30d3a 100644 (file)
@@ -223,11 +223,13 @@ PyObject* __wxStart(PyObject* /* self */, PyObject* args)
 
 void __wxCleanup() {
     wxEntryCleanup();
+#ifdef WXP_WITH_THREAD
     delete wxPyTMutex;
     wxPyTMutex = NULL;
     wxPyTStates->Empty();
     delete wxPyTStates;
     wxPyTStates = NULL;
+#endif
 }
 
 
@@ -254,8 +256,8 @@ PyObject* __wxSetDictionary(PyObject* /* self */, PyObject* args)
 #ifdef __WXMOTIF__
 #define wxPlatform "__WXMOTIF__"
 #endif
-#ifdef __WXQT__
-#define wxPlatform "__WXQT__"
+#ifdef __WXX11__
+#define wxPlatform "__WXX11__"
 #endif
 #ifdef __WXGTK__
 #define wxPlatform "__WXGTK__"
@@ -448,9 +450,12 @@ unsigned long wxPyGetCurrentThreadId() {
     return wxThread::GetCurrentId();
 }
 
-
+static PyThreadState* gs_shutdownTState;
 static
 PyThreadState* wxPyGetThreadState() {
+    if (wxPyTMutex == NULL) // Python is shutting down...
+        return gs_shutdownTState;
+
     unsigned long ctid = wxPyGetCurrentThreadId();
     PyThreadState* tstate = NULL;
 
@@ -469,6 +474,10 @@ PyThreadState* wxPyGetThreadState() {
 
 static
 void wxPySaveThreadState(PyThreadState* tstate) {
+    if (wxPyTMutex == NULL) { // Python is shutting down, assume a single thread...
+        gs_shutdownTState = tstate;
+        return;
+    }
     unsigned long ctid = wxPyGetCurrentThreadId();
     wxPyTMutex->Lock();
     for(size_t i=0; i < wxPyTStates->GetCount(); i++) {