]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/evtloopcmn.cpp
fixed wxXmlResource::Load's detection of filenames to be done as early as possible
[wxWidgets.git] / src / common / evtloopcmn.cpp
index dc42cdbf023fe0f069f6853bd15bf1f457a0f136..863946f59db59b75f87ae23331cded03f02e06ad 100644 (file)
@@ -9,14 +9,6 @@
 // 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;
@@ -43,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);
@@ -128,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
@@ -136,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