]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/appbase.cpp
on HP-UX 11.11, vsscanf first parameter is not const
[wxWidgets.git] / src / common / appbase.cpp
index 8e819f62d1ca79cdc589f758312e19647c3d8204..209241a55b2a32d10922ebb23950decda3c5cca9 100644 (file)
@@ -44,6 +44,7 @@
 #include "wx/msgout.h"
 #include "wx/ptr_scpd.h"
 #include "wx/tokenzr.h"
+#include "wx/thread.h"
 
 #if wxUSE_EXCEPTIONS && wxUSE_STL
     #include <exception>
@@ -358,21 +359,21 @@ void wxAppConsoleBase::ProcessPendingEvents()
 
     if (wxPendingEvents)
     {
-        // iterate until the list becomes empty
+        // iterate until the list becomes empty: the handlers remove themselves
+        // from it when they don't have any more pending events
         wxList::compatibility_iterator node = wxPendingEvents->GetFirst();
         while (node)
         {
-            wxEvtHandler *handler = (wxEvtHandler *)node->GetData();
-            wxPendingEvents->Erase(node);
-
             // In ProcessPendingEvents(), new handlers might be add
             // and we can safely leave the critical section here.
             wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
 
+            wxEvtHandler *handler = (wxEvtHandler *)node->GetData();
             handler->ProcessPendingEvents();
 
             wxENTER_CRIT_SECT( *wxPendingEventsLocker );
 
+            // restart as the iterators could have been invalidated
             node = wxPendingEvents->GetFirst();
         }
     }
@@ -485,7 +486,7 @@ void wxAppConsoleBase::OnInitCmdLine(wxCmdLineParser& parser)
 #if wxUSE_LOG
         {
             wxCMD_LINE_SWITCH,
-            "",
+            NULL,
             OPTION_VERBOSE,
             gettext_noop("generate verbose log messages"),
             wxCMD_LINE_VAL_NONE,
@@ -494,14 +495,7 @@ void wxAppConsoleBase::OnInitCmdLine(wxCmdLineParser& parser)
 #endif // wxUSE_LOG
 
         // terminator
-        {
-            wxCMD_LINE_NONE,
-            "",
-            "",
-            "",
-            wxCMD_LINE_VAL_NONE,
-            0x0
-        }
+        wxCMD_LINE_DESC_END
     };
 
     parser.SetDesc(cmdLineDesc);
@@ -651,13 +645,6 @@ void wxConsoleAppTraitsBase::RemoveFromPendingDelete(wxObject * WXUNUSED(object)
     // nothing to do
 }
 
-#if wxUSE_SOCKETS
-GSocketGUIFunctionsTable* wxConsoleAppTraitsBase::GetSocketGUIFunctionsTable()
-{
-    return NULL;
-}
-#endif
-
 // ----------------------------------------------------------------------------
 // wxAppTraits
 // ----------------------------------------------------------------------------
@@ -670,6 +657,31 @@ void wxAppTraitsBase::SetLocale()
 }
 #endif
 
+#if wxUSE_THREADS
+void wxMutexGuiEnterImpl();
+void wxMutexGuiLeaveImpl();
+
+void wxAppTraitsBase::MutexGuiEnter()
+{
+    wxMutexGuiEnterImpl();
+}
+
+void wxAppTraitsBase::MutexGuiLeave()
+{
+    wxMutexGuiLeaveImpl();
+}
+
+void WXDLLIMPEXP_BASE wxMutexGuiEnter()
+{
+    wxAppConsoleBase::GetInstance()->GetTraits()->MutexGuiEnter();
+}
+
+void WXDLLIMPEXP_BASE wxMutexGuiLeave()
+{
+    wxAppConsoleBase::GetInstance()->GetTraits()->MutexGuiLeave();
+}
+#endif // wxUSE_THREADS
+
 #ifdef __WXDEBUG__
 
 bool wxAppTraitsBase::ShowAssertDialog(const wxString& msgOriginal)
@@ -797,12 +809,6 @@ void wxTrap()
 {
 #if defined(__WXMSW__) && !defined(__WXMICROWIN__)
     DebugBreak();
-#elif defined(__WXMAC__) && !defined(__DARWIN__)
-    #if __powerc
-        Debugger();
-    #else
-        SysBreak();
-    #endif
 #elif defined(_MSL_USING_MW_C_HEADERS) && _MSL_USING_MW_C_HEADERS
     Debugger();
 #elif defined(__UNIX__)