- 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 ( ;; )
+ // we must ensure that OnExit() is called even if an exception is thrown
+ // from inside Dispatch() but we must call it from Exit() in normal
+ // situations because it is supposed to be called synchronously,
+ // wxModalEventLoop depends on this (so we can't just use ON_BLOCK_EXIT or
+ // something similar here)
+ wxTRY