From 8c97ed86ff725b9fea444ac00b4a33e76920e737 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Wed, 25 May 2011 14:38:53 -0600 Subject: fix for SH-1624: Crash during viewer startup: LLViewerTextureList::addImageToList --- indra/newview/llappviewer.cpp | 13 ++++++++++++- indra/newview/llviewertexturelist.cpp | 11 ++++++----- indra/newview/llviewertexturelist.h | 1 + 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 75b6c18c57..a0be252ab2 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -739,6 +739,8 @@ bool LLAppViewer::init() } initThreads(); + LL_INFOS("InitInfo") << "Threads initialized." << LL_ENDL ; ; + writeSystemInfo(); // Initialize updater service (now that we have an io pump) @@ -765,6 +767,10 @@ bool LLAppViewer::init() LL_INFOS("InitInfo") << "J2C Engine is: " << LLImageJ2C::getEngineInfo() << LL_ENDL; LL_INFOS("InitInfo") << "libcurl version is: " << LLCurl::getVersionString() << LL_ENDL; + //Note: --bao + //allow to start texture fetching, must be called after initThreads(); + gTextureList.start() ; + // Get the single value from the crash settings file, if it exists std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE); gCrashSettings.loadFromFile(crash_settings_filename); @@ -773,6 +779,7 @@ bool LLAppViewer::init() gCrashSettings.setS32(CRASH_BEHAVIOR_SETTING, CRASH_BEHAVIOR_ALWAYS_SEND); gCrashSettings.saveToFile(crash_settings_filename, FALSE); } + LL_INFOS("InitInfo") << "Crash settings done." << LL_ENDL ; ///////////////////////////////////////////////// // OS-specific login dialogs @@ -821,6 +828,8 @@ bool LLAppViewer::init() // Let code in llui access the viewer help floater LLUI::sHelpImpl = LLViewerHelp::getInstance(); + LL_INFOS("InitInfo") << "UI initialization is done." << LL_ENDL ; + // Load translations for tooltips LLFloater::initClass(); @@ -890,7 +899,8 @@ bool LLAppViewer::init() OSMessageBox(msg.str(),LLStringUtil::null,OSMB_OK); return 1; } - + LL_INFOS("InitInfo") << "Cache initialization is done." << LL_ENDL ; + // Initialize the repeater service. LLMainLoopRepeater::instance().start(); @@ -899,6 +909,7 @@ bool LLAppViewer::init() // gGLActive = TRUE; initWindow(); + LL_INFOS("InitInfo") << "Window is initialized." << LL_ENDL ; // initWindow also initializes the Feature List, so now we can initialize this global. LLCubeMap::sUseCubeMaps = LLFeatureManager::getInstance()->isFeatureAvailable("RenderCubeMap"); diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index cd6653b0c7..a50361add2 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -88,15 +88,16 @@ LLViewerTextureList::LLViewerTextureList() { } -void LLViewerTextureList::init() +void LLViewerTextureList::start() { sRenderThreadID = LLThread::currentID() ; - + mInitialized = TRUE ; sNumImages = 0; - mMaxResidentTexMemInMegaBytes = 0; - mMaxTotalTextureMemInMegaBytes = 0 ; - +} + +void LLViewerTextureList::init() +{ mUpdateStats = TRUE; // Update how much texture RAM we're allowed to use. diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index d02b6be6b5..772f533bbb 100644 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -78,6 +78,7 @@ public: LLViewerTextureList(); ~LLViewerTextureList(); + void start(); void init(); void shutdown(); void dump(); -- cgit v1.2.3