// ---------------------------------------------------------------------------
extern wxChar *wxBuffer;
-extern wxList *wxWinHandleList;
extern wxList WXDLLEXPORT wxPendingDelete;
#ifndef __WXMICROWIN__
extern void wxSetKeyboardHook(bool doIt);
wxRegisterPenWin();
#endif
- wxWinHandleList = new wxList(wxKEY_INTEGER);
+ wxWinHandleHash = new wxWinHashTable(wxKEY_INTEGER, 100);
// This is to foil optimizations in Visual C++ that throw out dummy.obj.
// PLEASE DO NOT ALTER THIS.
Ctl3dUnregister(wxhInstance);
#endif
- if (wxWinHandleList)
- delete wxWinHandleList;
+ delete wxWinHandleHash;
// GL: I'm annoyed ... I don't know where to put this and I don't want to
// create a module for that as it's part of the core.
// Yield to incoming messages
-static bool gs_inYield = FALSE;
-
-bool wxYield()
+bool wxApp::Yield(bool onlyIfNeeded)
{
+ // MT-FIXME
+ static bool s_inYield = FALSE;
+
// 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
+ if ( s_inYield )
+ {
+ if ( !onlyIfNeeded )
+ {
+ wxFAIL_MSG( wxT("wxYield called recursively" ) );
+ }
- gs_inYield = TRUE;
+ return FALSE;
+ }
+
+ s_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
break;
}
- // If they are pending events, we must process them.
- if (wxTheApp)
- wxTheApp->ProcessPendingEvents();
+ // if there are pending events, we must process them.
+ ProcessPendingEvents();
// let the logs be flashed again
wxLog::Resume();
- gs_inYield = FALSE;
+ s_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
return TRUE;
#else
- wxFAIL_MSG(_T("set wxUSE_ON_FATAL_EXCEPTION to 1 to sue this function"));
-
- (void)doit;
+ wxFAIL_MSG(_T("set wxUSE_ON_FATAL_EXCEPTION to 1 to use this function"));
+
+ (void)doit;
return FALSE;
#endif
}