void __wxCleanup() {
wxEntryCleanup();
+#ifdef WXP_WITH_THREAD
delete wxPyTMutex;
wxPyTMutex = NULL;
wxPyTStates->Empty();
delete wxPyTStates;
wxPyTStates = NULL;
+#endif
}
#ifdef __WXMOTIF__
#define wxPlatform "__WXMOTIF__"
#endif
-#ifdef __WXQT__
-#define wxPlatform "__WXQT__"
+#ifdef __WXX11__
+#define wxPlatform "__WXX11__"
#endif
#ifdef __WXGTK__
#define wxPlatform "__WXGTK__"
//---------------------------------------------------------------------------
-// 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__
- ThreadID current ;
- MacGetCurrentThread( ¤t ) ;
- return (unsigned long)current;
-#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;
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++) {
}
+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;
+}
+
+
//----------------------------------------------------------------------
//----------------------------------------------------------------------