- wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") );
-}
-
-bool wxEventLoop::IsRunning() const
-{
- return m_impl != NULL;
-}
-
-int wxEventLoop::Run()
-{
- // event loops are not recursive, you need to create another loop!
- wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
-
- // SendIdleMessage() and Dispatch() below may throw so the code here should
- // be exception-safe, hence we must use local objects for all actions we
- // should undo
- wxEventLoopActivator activate(&ms_activeLoop, this);
- wxEventLoopImplTiedPtr impl(&m_impl, new wxEventLoopImpl);
-
- class CallEventLoopMethod
- {
- public:
- typedef void (wxEventLoop::*FuncType)();
-
- CallEventLoopMethod(wxEventLoop *evtLoop, FuncType fn)
- : m_evtLoop(evtLoop), m_fn(fn) { }
- ~CallEventLoopMethod() { (m_evtLoop->*m_fn)(); }
-
- private:
- wxEventLoop *m_evtLoop;
- FuncType m_fn;
- } callOnExit(this, &wxEventLoop::OnExit);
-
- for ( ;; )
- {