git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9410
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// Yield to other apps/messages
WXDLLEXPORT bool wxYield();
// Yield to other apps/messages
WXDLLEXPORT bool wxYield();
+// Like wxYield, but fails silently if the yield is recursive.
+WXDLLEXPORT bool wxYieldIfNeeded();
+
// Yield to other apps/messages and disable user input
WXDLLEXPORT bool wxSafeYield(wxWindow *win = NULL);
// Yield to other apps/messages and disable user input
WXDLLEXPORT bool wxSafeYield(wxWindow *win = NULL);
// wxYield
//-----------------------------------------------------------------------------
// wxYield
//-----------------------------------------------------------------------------
+static bool gs_inYield = FALSE;
+
bool wxYield()
{
#if wxUSE_THREADS
bool wxYield()
{
#if wxUSE_THREADS
}
#endif // wxUSE_THREADS
}
#endif // wxUSE_THREADS
-#ifdef __WXDEBUG__
- static bool s_inYield = FALSE;
-
- if (s_inYield)
+#ifdef __WXDEBUG__
+ if (gs_inYield)
wxFAIL_MSG( wxT("wxYield called recursively" ) );
wxFAIL_MSG( wxT("wxYield called recursively" ) );
// let the logs be flashed again
wxLog::Resume();
// let the logs be flashed again
wxLog::Resume();
-#ifdef __WXDEBUG__
- s_inYield = FALSE;
-#endif
+//-----------------------------------------------------------------------------
+// wxYieldIfNeeded
+// Like wxYield, but fails silently if the yield is recursive.
+//-----------------------------------------------------------------------------
+
+bool wxYieldIfNeeded()
+{
+ if (gs_inYield)
+ return FALSE;
+
+ return wxYield();
+}
+
//-----------------------------------------------------------------------------
// wxWakeUpIdle
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// wxWakeUpIdle
//-----------------------------------------------------------------------------
// wxYield
//-----------------------------------------------------------------------------
// wxYield
//-----------------------------------------------------------------------------
+static bool gs_inYield = FALSE;
+
bool wxYield()
{
#if wxUSE_THREADS
bool wxYield()
{
#if wxUSE_THREADS
}
#endif // wxUSE_THREADS
}
#endif // wxUSE_THREADS
-#ifdef __WXDEBUG__
- static bool s_inYield = FALSE;
-
- if (s_inYield)
+#ifdef __WXDEBUG__
+ if (gs_inYield)
wxFAIL_MSG( wxT("wxYield called recursively" ) );
wxFAIL_MSG( wxT("wxYield called recursively" ) );
// let the logs be flashed again
wxLog::Resume();
// let the logs be flashed again
wxLog::Resume();
-#ifdef __WXDEBUG__
- s_inYield = FALSE;
-#endif
+//-----------------------------------------------------------------------------
+// wxYieldIfNeeded
+// Like wxYield, but fails silently if the yield is recursive.
+//-----------------------------------------------------------------------------
+
+bool wxYieldIfNeeded()
+{
+ if (gs_inYield)
+ return FALSE;
+
+ return wxYield();
+}
+
//-----------------------------------------------------------------------------
// wxWakeUpIdle
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// wxWakeUpIdle
//-----------------------------------------------------------------------------
}
// Yield to other processes
}
// Yield to other processes
+
+static bool gs_inYield = FALSE;
+
+#ifdef __WXDEBUG__
+ if (gs_inYield)
+ wxFAIL_MSG( wxT("wxYield called recursively" ) );
+#endif
+
+ gs_inYield = TRUE;
+
long sleepTime = 0 ; //::GetCaretTime();
long sleepTime = 0 ; //::GetCaretTime();
}
wxMacProcessNotifierAndPendingEvents() ;
}
wxMacProcessNotifierAndPendingEvents() ;
+
+ 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();
}
// Yield to other processes
}
// Yield to other processes
+
+static bool gs_inYield = FALSE;
+
+#ifdef __WXDEBUG__
+ if (gs_inYield)
+ wxFAIL_MSG( wxT("wxYield called recursively" ) );
+#endif
+
+ gs_inYield = TRUE;
+
long sleepTime = 0 ; //::GetCaretTime();
long sleepTime = 0 ; //::GetCaretTime();
}
wxMacProcessNotifierAndPendingEvents() ;
}
wxMacProcessNotifierAndPendingEvents() ;
+
+ 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();
}
// Yield to other processes
}
// Yield to other processes
+
+static bool gs_inYield = FALSE;
+
+#ifdef __WXDEBUG__
+ if (gs_inYield)
+ wxFAIL_MSG( wxT("wxYield called recursively" ) );
+#endif
+
+ gs_inYield = TRUE;
+
while (wxTheApp && wxTheApp->Pending())
wxTheApp->Dispatch();
while (wxTheApp && wxTheApp->Pending())
wxTheApp->Dispatch();
XtAppProcessEvent((XtAppContext) wxTheApp->GetAppContext(), XtIMAll);
#endif
XtAppProcessEvent((XtAppContext) wxTheApp->GetAppContext(), XtIMAll);
#endif
+// Yield to incoming messages; but fail silently if recursion is detected.
+bool wxYieldIfNeeded()
+{
+ if (gs_inYield)
+ return FALSE;
+
+ return wxYield();
+}
+
+
// TODO use XmGetPixmap (?) to get the really standard icons!
#include "wx/generic/info.xpm"
// TODO use XmGetPixmap (?) to get the really standard icons!
#include "wx/generic/info.xpm"
}
// Yield to incoming messages
}
// 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();
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;
// 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;
// let the logs be flashed again
wxLog::Resume();
// let the logs be flashed again
wxLog::Resume();
+// 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
bool wxHandleFatalExceptions(bool doit)
{
#if wxUSE_ON_FATAL_EXCEPTION