X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bac507e062ea3633b1e6bc8aae7733c2df4c48cd..2f5292c3df689f4695012630439a648aee2956ee:/include/wx/thread.h diff --git a/include/wx/thread.h b/include/wx/thread.h index 7e0dc5997f..2c6f2f8c0e 100644 --- a/include/wx/thread.h +++ b/include/wx/thread.h @@ -137,7 +137,7 @@ private: #if defined(__WXMSW__) || defined(__WXPM__) class WXDLLEXPORT wxCriticalSectionInternal; #define WXCRITICAL_INLINE -#else // !MSW +#else // !MSW && !PM #define WXCRITICAL_INLINE inline #endif // MSW/!MSW @@ -350,14 +350,26 @@ private: 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 // 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 @@ -372,7 +384,7 @@ public: // implementation only until the end of file // ----------------------------------------------------------------------------- #if wxUSE_THREADS -#if defined(__WXMSW__) || defined(__WXPM__) +#if defined(__WXMSW__) // 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 @@ -387,7 +399,15 @@ public: // 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 +#elif 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 + extern void WXDLLEXPORT wxMutexGuiLeaveOrEnter(); + + // returns TRUE if the main thread has GUI lock + extern bool WXDLLEXPORT wxGuiOwnedByMainThread(); +#else // !MSW && !PM // implement wxCriticalSection using mutexes inline wxCriticalSection::wxCriticalSection() { } inline wxCriticalSection::~wxCriticalSection() { }