#include "wx/msgout.h"
#include "wx/ptr_scpd.h"
#include "wx/tokenzr.h"
+#include "wx/thread.h"
#if wxUSE_EXCEPTIONS && wxUSE_STL
#include <exception>
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();
}
}
#if wxUSE_LOG
{
wxCMD_LINE_SWITCH,
- "",
+ NULL,
OPTION_VERBOSE,
gettext_noop("generate verbose log messages"),
wxCMD_LINE_VAL_NONE,
#endif // wxUSE_LOG
// terminator
- {
- wxCMD_LINE_NONE,
- "",
- "",
- "",
- wxCMD_LINE_VAL_NONE,
- 0x0
- }
+ wxCMD_LINE_DESC_END
};
parser.SetDesc(cmdLineDesc);
// nothing to do
}
-#if wxUSE_SOCKETS
-GSocketGUIFunctionsTable* wxConsoleAppTraitsBase::GetSocketGUIFunctionsTable()
-{
- return NULL;
-}
-#endif
-
// ----------------------------------------------------------------------------
// wxAppTraits
// ----------------------------------------------------------------------------
}
#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)
{
#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__)