#if defined(__WXMSW__) || defined(__WXPM__)
class WXDLLEXPORT wxCriticalSectionInternal;
#define WXCRITICAL_INLINE
+#elif defined(__WXMAC__)
+ class WXDLLEXPORT wxCriticalSectionInternal;
+ #define WXCRITICAL_INLINE
#else // !MSW && !PM
#define WXCRITICAL_INLINE inline
#endif // MSW/!MSW
wxCriticalSection(const wxCriticalSection&);
wxCriticalSection& operator=(const wxCriticalSection&);
-#if defined(__WXMSW__) || defined(__WXPM__)
+#if defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMAC__)
wxCriticalSectionInternal *m_critsect;
#else // !MSW
wxMutex m_mutex;
// wakes up the main thread if it's sleeping inside ::GetMessage()
extern void WXDLLEXPORT wxWakeUpMainThread();
+ // return TRUE if the main thread is waiting for some other to terminate:
+ // wxApp then should block all "dangerous" messages
+ extern bool WXDLLEXPORT wxIsWaitingForThread();
+#elif defined(__WXMAC__)
+ extern void WXDLLEXPORT wxMutexGuiLeaveOrEnter();
+
+ // returns TRUE if the main thread has GUI lock
+ extern bool WXDLLEXPORT wxGuiOwnedByMainThread();
+
+ // wakes up the main thread if it's sleeping inside ::GetMessage()
+ extern void WXDLLEXPORT wxWakeUpMainThread();
+
// return TRUE if the main thread is waiting for some other to terminate:
// wxApp then should block all "dangerous" messages
extern bool WXDLLEXPORT wxIsWaitingForThread();
// returns TRUE if the main thread has GUI lock
extern bool WXDLLEXPORT wxGuiOwnedByMainThread();
+ // return TRUE if the main thread is waiting for some other to terminate:
+ // wxApp then should block all "dangerous" messages
+ extern bool WXDLLEXPORT wxIsWaitingForThread();
#else // !MSW && !PM
// implement wxCriticalSection using mutexes
inline wxCriticalSection::wxCriticalSection() { }