]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/helpers.cpp
applied doc patch for wxPostEvent().
[wxWidgets.git] / wxPython / src / helpers.cpp
index c817051fb8b14501d57095031a87aa5fb04302da..340c740037478fa4367ec95e01e4c53c3dc30d3a 100644 (file)
 
 //----------------------------------------------------------------------
 
-
+#ifdef __WXGTK__
+int  WXDLLEXPORT wxEntryStart( int& argc, char** argv );
+#else
 int  WXDLLEXPORT wxEntryStart( int argc, char** argv );
+#endif
 int  WXDLLEXPORT wxEntryInitGui();
 void WXDLLEXPORT wxEntryCleanup();
 
@@ -220,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
 }
 
 
@@ -251,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__"
@@ -438,30 +443,19 @@ PyObject* wxPyConstructObject(void* ptr,
 
 //---------------------------------------------------------------------------
 
-// TODO:  This should really be wxThread::GetCurrentId(), and I will do so
-//        after I make a quick 2.3.2.1 release.
+
 #ifdef WXP_WITH_THREAD
-#ifdef __WXGTK__  // does wxGTK always use pthreads?
-#include <unistd.h>
-#include <pthread.h>
-#endif
 inline
 unsigned long wxPyGetCurrentThreadId() {
-#ifdef __WXMSW__
-    return (unsigned long)::GetCurrentThreadId();
-#endif
-#ifdef __WXGTK__  // does wxGTK always use pthreads?
-    return (unsigned long)pthread_self();
-#endif
-#ifdef __WXMAC__
-#error Fix this!
-#endif
+    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;
 
@@ -480,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++) {
@@ -1501,6 +1499,18 @@ PyObject* wxArrayString2PyList_helper(const wxArrayString& arr) {
 }
 
 
+PyObject* wxArrayInt2PyList_helper(const wxArrayInt& arr) {
+
+    PyObject* list = PyList_New(0);
+    for (size_t i=0; i < arr.GetCount(); i++) {
+        PyObject* number = PyInt_FromLong(arr[i]);
+        PyList_Append(list, number);
+        Py_DECREF(number);
+    }
+    return list;
+}
+
+
 //----------------------------------------------------------------------
 //----------------------------------------------------------------------