// ----------------------------------------------------------------------------
// this defines wxEventLoopPtr
-wxDEFINE_SCOPED_PTR_TYPE(wxEventLoop);
-
-// but we need a smart pointer tied to wxAppBase::m_mainLoop, so we define
-// another helper class
-class wxTiedEventLoopPtr : public wxEventLoopPtr
-{
-public:
- wxTiedEventLoopPtr(wxEventLoop **ppEvtLoop, wxEventLoop *pLoop)
- : wxEventLoopPtr(*ppEvtLoop = pLoop), m_ppEvtLoop(ppEvtLoop)
- {
- }
-
- ~wxTiedEventLoopPtr() { *m_ppEvtLoop = NULL; }
-
-private:
- wxEventLoop **m_ppEvtLoop;
-};
+wxDEFINE_TIED_SCOPED_PTR_TYPE(wxEventLoop);
// ============================================================================
// wxAppBase implementation
delete wxTheColourDatabase;
wxTheColourDatabase = NULL;
-#if wxUSE_THREADS
delete wxPendingEvents;
wxPendingEvents = NULL;
+#if wxUSE_THREADS
delete wxPendingEventsLocker;
wxPendingEventsLocker = NULL;
int wxAppBase::MainLoop()
{
#if wxUSE_EVTLOOP_IN_APP
- wxTiedEventLoopPtr mainLoop(&m_mainLoop, new wxEventLoop);
+ wxEventLoopTiedPtr mainLoop(&m_mainLoop, new wxEventLoop);
return m_mainLoop->Run();
#else // !wxUSE_EVTLOOP_IN_APP
#if wxUSE_EVTLOOP_IN_APP
// we should exit from the main event loop, not just any currently active
// (e.g. modal dialog) event loop
- if ( m_mainLoop )
+ if ( m_mainLoop && m_mainLoop->IsRunning() )
{
m_mainLoop->Exit(0);
}
GSocketGUIFunctionsTable* wxGUIAppTraitsBase::GetSocketGUIFunctionsTable()
{
-#ifdef __WXMAC__
- // NB: wxMac does not have any GUI-specific functions in gsocket.c and
+#if defined(__WXMAC__) && !defined(__DARWIN__)
+ // NB: wxMac CFM does not have any GUI-specific functions in gsocket.c and
// so it doesn't need this table at all
return NULL;
-#else // !__WXMAC__
+#else // !__WXMAC__ || __DARWIN__
static GSocketGUIFunctionsTable table =
{
_GSocket_GUI_Init,
_GSocket_Disable_Events
};
return &table;
-#endif // __WXMAC__/!__WXMAC__
+#endif // !__WXMAC__ || __DARWIN__
}
#endif