// in order to avoid any overhead under !MSW make all wxCriticalSection class
// functions inline - but this can't be done under MSW
-#ifdef __WXMSW__
+#if defined(__WXMSW__) || defined(__WXPM__)
class WXDLLEXPORT wxCriticalSectionInternal;
#define WXCRITICAL_INLINE
#else // !MSW
wxCriticalSection(const wxCriticalSection&);
wxCriticalSection& operator=(const wxCriticalSection&);
-#ifdef __WXMSW__
+#if defined(__WXMSW__) || defined(__WXPM__)
wxCriticalSectionInternal *m_critsect;
#else // !MSW
wxMutex m_mutex;
void WXDLLEXPORT wxMutexGuiEnter();
void WXDLLEXPORT wxMutexGuiLeave();
+// macros for entering/leaving critical sections which may be used without
+// having to take them inside "#if wxUSE_THREADS"
+#define wxENTER_CRIT_SECT(cs) (cs)->Enter()
+#define wxLEAVE_CRIT_SECT(cs) (cs)->Leave()
+#define wxCRIT_SECT_LOCKER(name, cs) wxCriticalSectionLocker name(*cs)
+
#else // !wxUSE_THREADS
-#include <wx/defs.h> // for WXDLLEXPORT
+#include "wx/defs.h" // for WXDLLEXPORT
// no thread support
inline void WXDLLEXPORT wxMutexGuiEnter() { }
inline void WXDLLEXPORT wxMutexGuiLeave() { }
+// macros for entering/leaving critical sections which may be used without
+// having to take them inside "#if wxUSE_THREADS"
+#define wxENTER_CRIT_SECT(cs)
+#define wxLEAVE_CRIT_SECT(cs)
+#define wxCRIT_SECT_LOCKER(name, cs)
+
#endif // wxUSE_THREADS
// automatically unlock GUI mutex in dtor
// implementation only until the end of file
// -----------------------------------------------------------------------------
#if wxUSE_THREADS
-#ifdef __WXMSW__
+#if defined(__WXMSW__) || defined(__WXPM__)
// unlock GUI if there are threads waiting for and lock it back when
// there are no more of them - should be called periodically by the main
// thread