]> 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 738d2f311a81fdf56f523111e35836e983bbffdb..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>
@@ -177,11 +178,7 @@ bool wxAppConsoleBase::Initialize(int& argcOrig, wxChar **argvOrig)
 #endif
 
 #ifndef __WXPALMOS__
-#if wxUSE_UNICODE
-    if ( m_appName.empty() && (bool) argv )
-#else
     if ( m_appName.empty() && argv )
-#endif
     {
         // the application name is, by default, the name of its executable file
         wxFileName::SplitPath(argv[0], NULL, &m_appName, NULL);
@@ -362,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();
         }
     }
@@ -648,13 +645,6 @@ void wxConsoleAppTraitsBase::RemoveFromPendingDelete(wxObject * WXUNUSED(object)
     // nothing to do
 }
 
-#if wxUSE_SOCKETS
-GSocketGUIFunctionsTable* wxConsoleAppTraitsBase::GetSocketGUIFunctionsTable()
-{
-    return NULL;
-}
-#endif
-
 // ----------------------------------------------------------------------------
 // wxAppTraits
 // ----------------------------------------------------------------------------
@@ -667,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)
@@ -794,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__)