diff options
author | Bryan O'Sullivan <bos@lindenlab.com> | 2009-06-11 11:14:45 -0700 |
---|---|---|
committer | Bryan O'Sullivan <bos@lindenlab.com> | 2009-06-11 11:14:45 -0700 |
commit | 02c86086acceb83fcddad763123b532c70641688 (patch) | |
tree | a7a220131b5b491d5c0823df1c07ee86a97e2a77 /indra/newview/llappviewer.cpp | |
parent | 5748a14f5d7e85230e74c330a7c2b058856be9cd (diff) | |
parent | 9c94b76ec10cb5a323f5f8c5c1e8340f40c3b175 (diff) |
Merge with Sabin
Diffstat (limited to 'indra/newview/llappviewer.cpp')
-rw-r--r-- | indra/newview/llappviewer.cpp | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 640b835da2..0c34d018a2 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2042,8 +2042,18 @@ bool LLAppViewer::initConfiguration() void LLAppViewer::checkForCrash(void) { -#if LL_SEND_CRASH_REPORTS - if (gLastExecEvent == LAST_EXEC_FROZE || gLastExecEvent == LAST_EXEC_OTHER_CRASH) +#if 1 //*REMOVE:Mani LL_SEND_CRASH_REPORTS + //*NOTE:Mani The current state of the crash handler has the MacOSX + // sending all crash reports as freezes, in order to let + // the MacOSX CrashRepoter generate stacks before spawning the + // SL crash logger. + // The Linux and Windows clients generate their own stacks and + // spawn the SL crash logger immediately. This may change in the future. +#if LL_DARWIN + if(gLastExecEvent != LAST_EXEC_NORMAL) +#else + if (gLastExecEvent == LAST_EXEC_FROZE || gLastExecEvent == LAST_EXEC_OTHER_CRASH) +#endif { llinfos << "Last execution froze, requesting to send crash report." << llendl; // @@ -2285,7 +2295,7 @@ void LLAppViewer::handleViewerCrash() llinfos << "Handle viewer crash entry." << llendl; //print out recorded call stacks if there are any. - LLError::LLCallStacks::print() ; + LLError::LLCallStacks::print(); LLAppViewer* pApp = LLAppViewer::instance(); if (pApp->beingDebugged()) @@ -3728,6 +3738,35 @@ void LLAppViewer::disconnectViewer() { gFloaterView->restoreAll(); } + + + std::list<LLFloater*> floaters_to_close; + for(LLView::child_list_const_iter_t it = gFloaterView->getChildList()->begin(); + it != gFloaterView->getChildList()->end(); + ++it) + { + // The following names are defined in the + // floater_image_preview.xml + // floater_sound_preview.xml + // floater_animation_preview.xml + // files. + LLFloater* fl = static_cast<LLFloater*>(*it); + if(fl + && (fl->getName() == "Image Preview" + || fl->getName() == "Sound Preview" + || fl->getName() == "Animation Preview" + )) + { + floaters_to_close.push_back(fl); + } + } + + while(!floaters_to_close.empty()) + { + LLFloater* fl = floaters_to_close.front(); + floaters_to_close.pop_front(); + fl->close(); + } } if (LLSelectMgr::getInstance()) |