MGR: suspend periodic RPCs only when displaying SafeMessageBox()

svn path=/trunk/boinc/; revision=17568
This commit is contained in:
Charlie Fenton 2009-03-10 02:16:34 +00:00
parent 7ad189225a
commit f39adfedb0
3 changed files with 14 additions and 5 deletions

View File

@ -2943,11 +2943,18 @@ Rom 9 Mar 2009
- MGR: Save state before exit.
clientgui/
BOINCBaseFrame.cpp
BOINCGUIApp.cpp
BOINCBaseFrame.cpp
BOINCGUIApp.cpp
Charlie 9 Mar 2009
- MGR: CBOINCBaseFrame::FireRestoreState() calls ProcessEvent()
on Mac instead of AddPendingEvent() to avoid displaying Disk
tab for an instant when showing the Window on manual launch.
- MGR: suspend periodic RPCs only when displaying SafeMessageBox()
not for all dialogs, so tabs can update during Preferences
dialog, etc.
clientgui/
BOINCBaseFrame.cpp
BOINCGUIApp.h
MainDocument.cpp

View File

@ -180,6 +180,7 @@ public:
void ShowApplication(bool bShow);
bool IsModalDialogDisplayed();
bool IsSafeMesageBoxDisplayed() { return (m_bSafeMessageBoxDisplayed != 0); };
int FilterEvent(wxEvent &event);

View File

@ -808,11 +808,12 @@ void CMainDocument::RunPeriodicRPCs() {
// or project in a demand RPC call. If Periodic RPCs continue
// to run during these dialogs, that pointer may no longer be
// valid by the time the demand RPC is executed. So we suspend
// periodic RPCs during modal dialogs.
// periodic RPCs during certain modal dialogs.
//
// Note that this depends on using wxGetApp().SafeMessageBox()
// instead of wxMessageBox in all tab views.
if (wxGetApp().IsModalDialogDisplayed() && (currentTabView != (VW_SGUI | VW_SMSG)) ) {
// instead of wxMessageBox in all tab views and anywhere else
// where a periodic RPC could cause a similar problem.
if (wxGetApp().IsSafeMesageBoxDisplayed()) {
return;
}