X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a6a181a303aeebb013d5237bfc8dd8b3b12aea50..586c455167ef67ac2920db45e48f8509b8be8d31:/src/common/evtloopcmn.cpp diff --git a/src/common/evtloopcmn.cpp b/src/common/evtloopcmn.cpp index d824c31822..de9fce7230 100644 --- a/src/common/evtloopcmn.cpp +++ b/src/common/evtloopcmn.cpp @@ -104,8 +104,24 @@ bool wxEventLoopManual::ProcessEvents() // and this input is only removed from it when pending event handlers are // executed) if ( wxTheApp ) + { wxTheApp->ProcessPendingEvents(); + // One of the pending event handlers could have decided to exit the + // loop so check for the flag before trying to dispatch more events + // (which could block indefinitely if no more are coming). + if ( m_shouldExit ) + { + // We still need to dispatch any remaining pending events, just as + // we do in the event loop in Run() if the loop is exited from a + // normal event handler. + while ( wxTheApp->HasPendingEvents() ) + wxTheApp->ProcessPendingEvents(); + + return false; + } + } + return Dispatch(); }