X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6dc5fd71817cd74e4326663cdf4b1ec1c6864510..0c55409f3a315e45963bc48f52435245e6af6c9d:/src/gtk/app.cpp diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index e29797d061..14935b2780 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -80,6 +80,8 @@ void wxExit() // wxYield //----------------------------------------------------------------------------- +static bool gs_inYield = FALSE; + bool wxYield() { #if wxUSE_THREADS @@ -90,14 +92,12 @@ bool wxYield() } #endif // wxUSE_THREADS -#ifdef __WXDEBUG__ - static bool s_inYield = FALSE; - - if (s_inYield) +#ifdef __WXDEBUG__ + if (gs_inYield) wxFAIL_MSG( wxT("wxYield called recursively" ) ); - - s_inYield = TRUE; #endif + + gs_inYield = TRUE; if (!g_isIdle) { @@ -123,13 +123,24 @@ bool wxYield() // let the logs be flashed again wxLog::Resume(); -#ifdef __WXDEBUG__ - s_inYield = FALSE; -#endif + gs_inYield = FALSE; return TRUE; } +//----------------------------------------------------------------------------- +// wxYieldIfNeeded +// Like wxYield, but fails silently if the yield is recursive. +//----------------------------------------------------------------------------- + +bool wxYieldIfNeeded() +{ + if (gs_inYield) + return FALSE; + + return wxYield(); +} + //----------------------------------------------------------------------------- // wxWakeUpIdle //-----------------------------------------------------------------------------