X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6afafc42fcf42ce84c9e1c0a7c00d3a0376d1aef..56bd6aaca9d758663e202816e1861ee8674526e7:/src/msw/app.cpp diff --git a/src/msw/app.cpp b/src/msw/app.cpp index 399e734e84..36dedf8627 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -1280,12 +1280,22 @@ void wxExit() } // Yield to incoming messages + +static bool gs_inYield = FALSE; + bool wxYield() { // disable log flushing from here because a call to wxYield() shouldn't // normally result in message boxes popping up &c wxLog::Suspend(); +#ifdef __WXDEBUG__ + if (gs_inYield) + wxFAIL_MSG( wxT("wxYield called recursively" ) ); +#endif + + gs_inYield = TRUE; + // we don't want to process WM_QUIT from here - it should be processed in // the main event loop in order to stop it MSG msg; @@ -1307,9 +1317,20 @@ bool wxYield() // let the logs be flashed again wxLog::Resume(); + gs_inYield = FALSE; + return TRUE; } +// Yield to incoming messages; but fail silently if recursion is detected. +bool wxYieldIfNeeded() +{ + if (gs_inYield) + return FALSE; + + return wxYield(); +} + bool wxHandleFatalExceptions(bool doit) { #if wxUSE_ON_FATAL_EXCEPTION