// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
-// ============================================================================
-// declarations
-// ============================================================================
-
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
-
// for compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#pragma hdrstop
#endif
+#include "wx/evtloop.h"
+
#ifndef WX_PRECOMP
#include "wx/app.h"
- #include "wx/event.h"
#endif //WX_PRECOMP
-#include "wx/evtloop.h"
-
// ----------------------------------------------------------------------------
-// globals
+// wxEventLoopBase
// ----------------------------------------------------------------------------
wxEventLoopBase *wxEventLoopBase::ms_activeLoop = NULL;
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);
{
// 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
// 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