X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e04d2bf54dcb336e20a27e906dcebdca368790b..acd32ffcdb319f162633c20e0202db3f8542998a:/src/common/evtloopcmn.cpp diff --git a/src/common/evtloopcmn.cpp b/src/common/evtloopcmn.cpp index 482324cd4e..863946f59d 100644 --- a/src/common/evtloopcmn.cpp +++ b/src/common/evtloopcmn.cpp @@ -23,7 +23,7 @@ #endif //WX_PRECOMP // ---------------------------------------------------------------------------- -// globals +// wxEventLoopBase // ---------------------------------------------------------------------------- wxEventLoopBase *wxEventLoopBase::ms_activeLoop = NULL; @@ -34,6 +34,28 @@ wxEventLoopBase::wxEventLoopBase() m_eventsToProcessInsideYield = wxEVT_CATEGORY_ALL; } +bool wxEventLoopBase::IsMain() const +{ + if (wxTheApp) + return wxTheApp->GetMainLoop() == this; + return false; +} + +/* static */ +void wxEventLoopBase::SetActive(wxEventLoopBase* loop) +{ + ms_activeLoop = loop; + + if (wxTheApp) + wxTheApp->OnEventLoopEnter(loop); +} + +void wxEventLoopBase::OnExit() +{ + if (wxTheApp) + wxTheApp->OnEventLoopExit(this); +} + void wxEventLoopBase::DelayPendingEventHandler(wxEvtHandler* toDelay) { wxENTER_CRIT_SECT(m_handlersWithPendingEventsLocker); @@ -119,7 +141,7 @@ void wxEventLoopBase::ProcessPendingEvents() { // In ProcessPendingEvents(), new handlers might be added // and we can safely leave the critical section here. - wxENTER_CRIT_SECT(m_handlersWithPendingEventsLocker); + wxLEAVE_CRIT_SECT(m_handlersWithPendingEventsLocker); // NOTE: we always call ProcessPendingEvents() on the first event handler // with pending events because handlers auto-remove themselves @@ -127,7 +149,7 @@ void wxEventLoopBase::ProcessPendingEvents() // more pending events. m_handlersWithPendingEvents[0]->ProcessPendingEvents(); - wxLEAVE_CRIT_SECT(m_handlersWithPendingEventsLocker); + wxENTER_CRIT_SECT(m_handlersWithPendingEventsLocker); } // now the wxHandlersWithPendingEvents is surely empty; however some event