X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9e2896e5c8944c5f5227fa080e1b781c4a6f2600..eca370a9cf88259480e9f34afc17347ce603ff37:/src/common/appcmn.cpp?ds=sidebyside diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp index 8cb28408e7..18d3dcafff 100644 --- a/src/common/appcmn.cpp +++ b/src/common/appcmn.cpp @@ -30,21 +30,16 @@ #ifndef WX_PRECOMP #include "wx/app.h" + #include "wx/list.h" #endif #include "wx/thread.h" -#include "wx/clipbrd.h" +#include "wx/confbase.h" // =========================================================================== // implementation // =========================================================================== -// ---------------------------------------------------------------------------- -// some global data defined here -// ---------------------------------------------------------------------------- - -IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule, wxModule) - // --------------------------------------------------------------------------- // wxAppBase // ---------------------------------------------------------------------------- @@ -52,21 +47,40 @@ IMPLEMENT_DYNAMIC_CLASS(wxClipboardModule, wxModule) void wxAppBase::ProcessPendingEvents() { // ensure that we're the only thread to modify the pending events list - wxCRIT_SECT_LOCKER(locker, wxPendingEventsLocker); + wxENTER_CRIT_SECT( *wxPendingEventsLocker ); if ( !wxPendingEvents ) + { + wxLEAVE_CRIT_SECT( *wxPendingEventsLocker ); return; + } // iterate until the list becomes empty wxNode *node = wxPendingEvents->First(); while (node) { wxEvtHandler *handler = (wxEvtHandler *)node->Data(); + delete node; + // In ProcessPendingEvents(), new handlers might be add + // and we can safely leave the critical section here. + wxLEAVE_CRIT_SECT( *wxPendingEventsLocker ); handler->ProcessPendingEvents(); + wxENTER_CRIT_SECT( *wxPendingEventsLocker ); - delete node; node = wxPendingEvents->First(); } + + wxLEAVE_CRIT_SECT( *wxPendingEventsLocker ); } +int wxAppBase::OnExit() +{ +#if wxUSE_CONFIG + // delete the config object if any (don't use Get() here, but Set() + // because Get() could create a new config object) + delete wxConfigBase::Set((wxConfigBase *) NULL); +#endif // wxUSE_CONFIG + + return 0; +}