]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/thread.h
Ignore the DECLARE_*()'s when swigging
[wxWidgets.git] / include / wx / thread.h
index 4eed53d1bf99e4a026943f248839a858c53ec655..a8346d20e096842ca2d420e9504d3b317e9fb688 100644 (file)
@@ -207,24 +207,29 @@ private:
 #if !defined(__WXMSW__)
     #define wxCRITSECT_IS_MUTEX 1
 
-#ifdef __WXMAC__
-    #define wxCRITSECT_INLINE
-#else
-    #define wxCRITSECT_INLINE inline
-#endif
+    #define wxCRITSECT_INLINE WXEXPORT inline
 #else // MSW
     #define wxCRITSECT_IS_MUTEX 0
 
     #define wxCRITSECT_INLINE
 #endif // MSW/!MSW
 
+enum wxCriticalSectionType
+{
+    // recursive critical section
+    wxCRITSEC_DEFAULT,
+
+    // non-recursive critical section
+    wxCRITSEC_NON_RECURSIVE
+};
+
 // you should consider wxCriticalSectionLocker whenever possible instead of
 // directly working with wxCriticalSection class - it is safer
 class WXDLLIMPEXP_BASE wxCriticalSection
 {
 public:
     // ctor & dtor
-    wxCRITSECT_INLINE wxCriticalSection();
+    wxCRITSECT_INLINE wxCriticalSection( wxCriticalSectionType critSecType = wxCRITSEC_DEFAULT );
     wxCRITSECT_INLINE ~wxCriticalSection();
     // enter the section (the same as locking a mutex)
     wxCRITSECT_INLINE void Enter();
@@ -264,9 +269,10 @@ private:
     DECLARE_NO_COPY_CLASS(wxCriticalSection)
 };
 
-#if wxCRITSECT_IS_MUTEX && !defined(__WXMAC__)
+#if wxCRITSECT_IS_MUTEX
     // implement wxCriticalSection using mutexes
-    inline wxCriticalSection::wxCriticalSection() { }
+    inline wxCriticalSection::wxCriticalSection( wxCriticalSectionType critSecType ) 
+       : m_mutex( critSecType == wxCRITSEC_DEFAULT ? wxMUTEX_RECURSIVE : wxMUTEX_DEFAULT )  { }
     inline wxCriticalSection::~wxCriticalSection() { }
 
     inline void wxCriticalSection::Enter() { (void)m_mutex.Lock(); }