Mgr: ignore timer events during RPC Wait dialog to prevent unintended recursion and crashes

svn path=/trunk/boinc/; revision=16025
This commit is contained in:
Charlie Fenton 2008-09-19 07:40:39 +00:00
parent 9758c47ffe
commit ab04d935e8
2 changed files with 9 additions and 1 deletions

View File

@ -7557,7 +7557,7 @@ David 18 Sept 2008
clientgui/
AsyncRPC.cpp,h
Charlie 18 Sep 2008
Charlie 19 Sep 2008
Mgr: The system handles timer events during modal dialogs, such as
while the RPC Wait dialog is shown. This may cause unintended
recursion and repeatedly posting the same RPC requests from
@ -7567,3 +7567,4 @@ Charlie 18 Sep 2008
clientgui/
BOINCBaseFrame.cpp
MainDocument.cpp,.h
sg_BoincSimpleGUI.cpp

View File

@ -547,6 +547,13 @@ void CSimplePanel::OnProjectsAttachToProject() {
// called from CSimpleFrame::OnRefreshView()
void CSimplePanel::OnFrameRender() {
CMainDocument* pDoc = wxGetApp().GetDocument();
wxASSERT(pDoc);
// OnFrameRender() may be called while SimpleGUI initialization is
// in progress due to completion of a periodic get_messages RPC,
// causing unintended recursion in CMainDocument::RequestRPC().
// Check for that situation here.
if (pDoc->WaitingForRPC()) return;
if (IsShown()) {