]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/thread.cpp
compilation fix for non-threaded compilation (threads are still broken
[wxWidgets.git] / src / msw / thread.cpp
index 0fd0fcdfadc02c14528f23fa93fd1dba83abdff0..ac600434e9e7c561be8265db2635984639c2d4ae 100644 (file)
     #define _MT
 #endif
 
-#ifdef __VISUALC__
+#if defined(__VISUALC__) || (defined(__BORLANDC__) && (__BORLANDC__ >= 0x500))
+
+#if defined(__BORLANDC__) && !defined(__MT__)
+// I can't set -tWM in the IDE (anyone?) so have to do this
+#define __MT__
+#endif
+
+#if defined(__BORLANDC__) && !defined(__MFC_COMPAT__)
+// Needed to know about _beginthreadex etc..
+#define __MFC_COMPAT__
+#endif
+
+
     #include <process.h>
 #endif
 
@@ -442,7 +454,7 @@ bool wxThreadInternal::Create(wxThread *thread)
     // for compilers which have it, we should use C RTL function for thread
     // creation instead of Win32 API one because otherwise we will have memory
     // leaks if the thread uses C RTL (and most threads do)
-#ifdef __VISUALC__
+#if defined(__VISUALC__) || (defined(__BORLANDC__) && (__BORLANDC__ >= 0x500))
     typedef unsigned (__stdcall *RtlThreadStart)(void *);
 
     m_hThread = (HANDLE)_beginthreadex(NULL, 0,
@@ -626,7 +638,12 @@ bool wxThread::SetConcurrency(size_t level)
         if ( hModKernel )
         {
             pfnSetProcessAffinityMask = (SETPROCESSAFFINITYMASK)
-                ::GetProcAddress(hModKernel, _T("SetProcessAffinityMask"));
+                ::GetProcAddress(hModKernel,
+#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x520)
+                                 "SetProcessAffinityMask");
+#else
+                                 _T("SetProcessAffinityMask"));
+#endif
         }
 
         // we've discovered a MT version of Win9x!
@@ -907,7 +924,7 @@ void wxThread::Exit(ExitCode status)
         delete this;
     }
 
-#ifdef __VISUALC__
+#if defined(__VISUALC__) || (defined(__BORLANDC__) && (__BORLANDC__ >= 0x500))
     _endthreadex((unsigned)status);
 #else // !VC++
     ::ExitThread((DWORD)status);