From e8818a3677f8af440456abec77cf31e7621fb9fa Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Thu, 16 Nov 2017 22:59:55 +0200 Subject: MAINT-8154 Disabled exception handling in LLAppViewer::frame() to get proper call stacks --- indra/newview/llappviewer.cpp | 94 ++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 54 deletions(-) (limited to 'indra/newview/llappviewer.cpp') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 3f4a111a9a..cbe3af5c76 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -359,6 +359,8 @@ BOOL gCrashOnStartup = FALSE; BOOL gLLErrorActivated = FALSE; BOOL gLogoutInProgress = FALSE; +BOOL gSimulateMemLeak = FALSE; + //////////////////////////////////////////////////////////// // Internal globals... that should be removed. static std::string gArgs; @@ -1325,6 +1327,35 @@ static LLTrace::BlockTimerStatHandle FTM_AGENT_UPDATE("Update"); LLTrace::BlockTimerStatHandle FTM_FRAME("Frame"); bool LLAppViewer::frame() +{ + bool ret = false; + + if (gSimulateMemLeak) + { + try + { + ret = doFrame(); + } + catch (std::bad_alloc) + { + LLMemory::logMemoryInfo(TRUE); + LLFloaterMemLeak* mem_leak_instance = LLFloaterReg::findTypedInstance("mem_leaking"); + if (mem_leak_instance) + { + mem_leak_instance->stop(); + } + LL_WARNS() << "Bad memory allocation in LLAppViewer::frame()!" << LL_ENDL; + } + } + else + { + ret = doFrame(); + } + + return ret; +} + +bool LLAppViewer::doFrame() { LLEventPump& mainloop(LLEventPumps::instance().obtain("mainloop")); LLSD newFrame; @@ -1346,7 +1377,6 @@ bool LLAppViewer::frame() //check memory availability information checkMemory() ; - try { pingMainloopTimeout("Main:MiscNativeWindowEvents"); @@ -1370,12 +1400,15 @@ bool LLAppViewer::frame() } //memory leaking simulation - LLFloaterMemLeak* mem_leak_instance = - LLFloaterReg::findTypedInstance("mem_leaking"); - if(mem_leak_instance) + if (gSimulateMemLeak) { - mem_leak_instance->idle() ; - } + LLFloaterMemLeak* mem_leak_instance = + LLFloaterReg::findTypedInstance("mem_leaking"); + if (mem_leak_instance) + { + mem_leak_instance->idle(); + } + } // canonical per-frame event mainloop.post(newFrame); @@ -1550,60 +1583,13 @@ bool LLAppViewer::frame() pingMainloopTimeout("Main:End"); } } - catch (const LLContinueError&) - { - LOG_UNHANDLED_EXCEPTION(""); - } - catch(std::bad_alloc) - { - LLMemory::logMemoryInfo(TRUE) ; - - //stop memory leaking simulation - LLFloaterMemLeak* mem_leak_instance = - LLFloaterReg::findTypedInstance("mem_leaking"); - if(mem_leak_instance) - { - mem_leak_instance->stop() ; - LL_WARNS() << "Bad memory allocation in LLAppViewer::frame()!" << LL_ENDL ; - } - else - { - //output possible call stacks to log file. - LLError::LLCallStacks::print() ; - - LL_ERRS() << "Bad memory allocation in LLAppViewer::frame()!" << LL_ENDL ; - } - } - catch (...) - { - CRASH_ON_UNHANDLED_EXCEPTION(""); - } if (LLApp::isExiting()) { // Save snapshot for next time, if we made it through initialization if (STATE_STARTED == LLStartUp::getStartupState()) { - try - { - saveFinalSnapshot(); - } - catch(std::bad_alloc) - { - LL_WARNS() << "Bad memory allocation when saveFinalSnapshot() is called!" << LL_ENDL ; - - //stop memory leaking simulation - LLFloaterMemLeak* mem_leak_instance = - LLFloaterReg::findTypedInstance("mem_leaking"); - if(mem_leak_instance) - { - mem_leak_instance->stop() ; - } - } - catch (...) - { - CRASH_ON_UNHANDLED_EXCEPTION("saveFinalSnapshot()"); - } + saveFinalSnapshot(); } delete gServicePump; -- cgit v1.2.3 From fab8eeeb86075173c708c7adb18ea4ad273e0e13 Mon Sep 17 00:00:00 2001 From: AndreyL ProductEngine Date: Wed, 17 Jan 2018 17:05:53 +0200 Subject: MAINT-8154 Brought back the LLContinueError handling --- indra/newview/llappviewer.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'indra/newview/llappviewer.cpp') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 3b11c9ff75..ea6842b62a 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1328,6 +1328,10 @@ bool LLAppViewer::frame() { ret = doFrame(); } + catch (const LLContinueError&) + { + LOG_UNHANDLED_EXCEPTION(""); + } catch (std::bad_alloc) { LLMemory::logMemoryInfo(TRUE); @@ -1341,7 +1345,14 @@ bool LLAppViewer::frame() } else { - ret = doFrame(); + try + { + ret = doFrame(); + } + catch (const LLContinueError&) + { + LOG_UNHANDLED_EXCEPTION(""); + } } return ret; -- cgit v1.2.3 From d251b3ade75e000a76946674a42ee0d0b3f216e7 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Wed, 24 Jan 2018 15:41:43 +0200 Subject: MAINT-8180 Help > Report Bug does not include viewer bitness --- indra/newview/llappviewer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/newview/llappviewer.cpp') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index ea6842b62a..d48ff458d7 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3305,8 +3305,8 @@ std::string LLAppViewer::getShortViewerInfoString() const std::ostringstream support; LLSD info(getViewerInfo()); - support << LLTrans::getString("APP_NAME") << " " << info["VIEWER_VERSION_STR"].asString(); - support << " (" << info["CHANNEL"].asString() << ")"; + support << info["CHANNEL"].asString() << " "; + support << info["VIEWER_VERSION_STR"].asString() << " (" << info["ADDRESS_SIZE"].asString() << "bit)"; if (info.has("BUILD_CONFIG")) { support << "\n" << "Build Configuration " << info["BUILD_CONFIG"].asString(); -- cgit v1.2.3 From 6e445e82e2a1c1559be5193cd2c131c5f1207f55 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Tue, 30 Jan 2018 14:03:26 +0000 Subject: MAINT-8091 Removed deprecated and unused private memory pooling --- indra/newview/llappviewer.cpp | 8 -------- 1 file changed, 8 deletions(-) (limited to 'indra/newview/llappviewer.cpp') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index d48ff458d7..73f70dffe4 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -799,7 +799,6 @@ bool LLAppViewer::init() initMaxHeapSize() ; LLCoros::instance().setStackSize(gSavedSettings.getS32("CoroutineStackSize")); - LLPrivateMemoryPoolManager::initClass((BOOL)gSavedSettings.getBOOL("MemoryPrivatePoolEnabled"), (U32)gSavedSettings.getU32("MemoryPrivatePoolSize")*1024*1024) ; // write Google Breakpad minidump files to a per-run dump directory to avoid multiple viewer issues. std::string logdir = gDirUtilp->getExpandedFilename(LL_PATH_DUMP, ""); mDumpPath = logdir; @@ -1363,10 +1362,6 @@ bool LLAppViewer::doFrame() LLEventPump& mainloop(LLEventPumps::instance().obtain("mainloop")); LLSD newFrame; - //LLPrivateMemoryPoolTester::getInstance()->run(false) ; - //LLPrivateMemoryPoolTester::getInstance()->run(true) ; - //LLPrivateMemoryPoolTester::destroy() ; - LL_RECORD_BLOCK_TIME(FTM_FRAME); LLTrace::BlockTimer::processTimes(); LLTrace::get_frame_recording().nextPeriod(); @@ -2075,9 +2070,6 @@ bool LLAppViewer::cleanup() LLMainLoopRepeater::instance().stop(); - //release all private memory pools. - LLPrivateMemoryPoolManager::destroyClass() ; - ll_close_fail_log(); LLError::LLCallStacks::cleanup(); -- cgit v1.2.3 From 22050467f5ec42b30e98d7bd59dd0ca617b259e4 Mon Sep 17 00:00:00 2001 From: maxim_productengine Date: Tue, 30 Jan 2018 17:45:04 +0200 Subject: MAINT-8180 Add the way to get default string despite of current localiztion --- indra/newview/llappviewer.cpp | 92 +++++++------------------------------------ 1 file changed, 14 insertions(+), 78 deletions(-) (limited to 'indra/newview/llappviewer.cpp') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 73f70dffe4..c357244c46 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3218,7 +3218,7 @@ LLSD LLAppViewer::getViewerInfo() const return info; } -std::string LLAppViewer::getViewerInfoString() const +std::string LLAppViewer::getViewerInfoString(bool default_string) const { std::ostringstream support; @@ -3228,7 +3228,7 @@ std::string LLAppViewer::getViewerInfoString() const LLStringUtil::format_map_t args; // allow the "Release Notes" URL label to be localized - args["ReleaseNotes"] = LLTrans::getString("ReleaseNotes"); + args["ReleaseNotes"] = LLTrans::getString("ReleaseNotes", default_string); for (LLSD::map_const_iterator ii(info.beginMap()), iend(info.endMap()); ii != iend; ++ii) @@ -3238,7 +3238,7 @@ std::string LLAppViewer::getViewerInfoString() const // Scalar value if (ii->second.isUndefined()) { - args[ii->first] = LLTrans::getString("none_text"); + args[ii->first] = LLTrans::getString("none_text", default_string); } else { @@ -3257,101 +3257,37 @@ std::string LLAppViewer::getViewerInfoString() const } // Now build the various pieces - support << LLTrans::getString("AboutHeader", args); + support << LLTrans::getString("AboutHeader", args, default_string); if (info.has("BUILD_CONFIG")) { - support << "\n" << LLTrans::getString("BuildConfig", args); + support << "\n" << LLTrans::getString("BuildConfig", args, default_string); } if (info.has("REGION")) { - support << "\n\n" << LLTrans::getString("AboutPosition", args); + support << "\n\n" << LLTrans::getString("AboutPosition", args, default_string); } - support << "\n\n" << LLTrans::getString("AboutSystem", args); + support << "\n\n" << LLTrans::getString("AboutSystem", args, default_string); support << "\n"; if (info.has("GRAPHICS_DRIVER_VERSION")) { - support << "\n" << LLTrans::getString("AboutDriver", args); + support << "\n" << LLTrans::getString("AboutDriver", args, default_string); } - support << "\n" << LLTrans::getString("AboutOGL", args); - support << "\n\n" << LLTrans::getString("AboutSettings", args); - support << "\n\n" << LLTrans::getString("AboutLibs", args); + support << "\n" << LLTrans::getString("AboutOGL", args, default_string); + support << "\n\n" << LLTrans::getString("AboutSettings", args, default_string); + support << "\n\n" << LLTrans::getString("AboutLibs", args, default_string); if (info.has("COMPILER")) { - support << "\n" << LLTrans::getString("AboutCompiler", args); + support << "\n" << LLTrans::getString("AboutCompiler", args, default_string); } if (info.has("PACKETS_IN")) { - support << '\n' << LLTrans::getString("AboutTraffic", args); + support << '\n' << LLTrans::getString("AboutTraffic", args, default_string); } // SLT timestamp LLSD substitution; substitution["datetime"] = (S32)time(NULL);//(S32)time_corrected(); - support << "\n" << LLTrans::getString("AboutTime", substitution); - - return support.str(); -} - -std::string LLAppViewer::getShortViewerInfoString() const -{ - std::ostringstream support; - LLSD info(getViewerInfo()); - - support << info["CHANNEL"].asString() << " "; - support << info["VIEWER_VERSION_STR"].asString() << " (" << info["ADDRESS_SIZE"].asString() << "bit)"; - if (info.has("BUILD_CONFIG")) - { - support << "\n" << "Build Configuration " << info["BUILD_CONFIG"].asString(); - } - if (info.has("REGION")) - { - support << "\n\n" << "You are at " << ll_vector3_from_sd(info["POSITION_LOCAL"]) << " in " << info["REGION"].asString(); - support << " located at " << info["HOSTNAME"].asString() << " (" << info["HOSTIP"].asString() << ")"; - support << "\n" << "SLURL: " << info["SLURL"].asString(); - support << "\n" << "(Global coordinates " << ll_vector3_from_sd(info["POSITION"]) << ")"; - support << "\n" << info["SERVER_VERSION"].asString(); - } - - support << "\n\n" << "CPU: " << info["CPU"].asString(); - support << "\n" << "Memory: " << info["MEMORY_MB"].asString() << " MB"; - support << "\n" << "OS: " << info["OS_VERSION"].asString(); - support << "\n" << "Graphics Card: " << info["GRAPHICS_CARD"].asString() << " (" << info["GRAPHICS_CARD_VENDOR"].asString() << ")"; - - if (info.has("GRAPHICS_DRIVER_VERSION")) - { - support << "\n" << "Windows Graphics Driver Version: " << info["GRAPHICS_DRIVER_VERSION"].asString(); - } - - support << "\n" << "OpenGL Version: " << info["OPENGL_VERSION"].asString(); - - support << "\n\n" << "Window size:" << info["WINDOW_WIDTH"].asString() << "x" << info["WINDOW_HEIGHT"].asString(); - support << "\n" << "Language: " << LLUI::getLanguage(); - support << "\n" << "Font Size Adjustment: " << info["FONT_SIZE_ADJUSTMENT"].asString() << "pt"; - support << "\n" << "UI Scaling: " << info["UI_SCALE"].asString(); - support << "\n" << "Draw distance: " << info["DRAW_DISTANCE"].asString(); - support << "\n" << "Bandwidth: " << info["NET_BANDWITH"].asString() << "kbit/s"; - support << "\n" << "LOD factor: " << info["LOD_FACTOR"].asString(); - support << "\n" << "Render quality: " << info["RENDER_QUALITY"].asString() << " / 7"; - support << "\n" << "ALM: " << info["GPU_SHADERS"].asString(); - support << "\n" << "Texture memory: " << info["TEXTURE_MEMORY"].asString() << "MB"; - support << "\n" << "VFS (cache) creation time: " << info["VFS_TIME"].asString(); - - support << "\n\n" << "J2C Decoder: " << info["J2C_VERSION"].asString(); - support << "\n" << "Audio Driver: " << info["AUDIO_DRIVER_VERSION"].asString(); - support << "\n" << "LLCEFLib/CEF: " << info["LLCEFLIB_VERSION"].asString(); - support << "\n" << "LibVLC: " << info["LIBVLC_VERSION"].asString(); - support << "\n" << "Voice Server: " << info["VOICE_VERSION"].asString(); - - if (info.has("PACKETS_IN")) - { - support << "\n" << "Packets Lost: " << info["PACKETS_LOST"].asInteger() << "/" << info["PACKETS_IN"].asInteger(); - F32 packets_pct = info["PACKETS_PCT"].asReal(); - support << " (" << ll_round(packets_pct, 0.001f) << "%)"; - } - - LLSD substitution; - substitution["datetime"] = (S32)time(NULL); - support << "\n" << LLTrans::getString("AboutTime", substitution); + support << "\n" << LLTrans::getString("AboutTime", substitution, default_string); return support.str(); } -- cgit v1.2.3 From 06bce2ddd0958cff3c2ee477a880e998dfc48be7 Mon Sep 17 00:00:00 2001 From: "Graham Linden graham@lindenlab.com" Date: Thu, 15 Feb 2018 21:55:24 +0000 Subject: Add debug setting and code to allow nVidia nSight graphics debugging to capture SL frames. These changes are only enabled if RenderNsightDebugSupport is true and eliminate use of some OpenGL legacy functionality which is incompatible with nSight capture (mostly glReadPixels and other fixed-function pipe rendering calls). --- indra/newview/llappviewer.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'indra/newview/llappviewer.cpp') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index d9273dfcb5..2b0b8064bd 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -583,6 +583,7 @@ static void settings_to_globals() LLSurface::setTextureSize(gSavedSettings.getU32("RegionTextureSize")); LLRender::sGLCoreProfile = gSavedSettings.getBOOL("RenderGLCoreProfile"); + LLRender::sNsightDebugSupport = gSavedSettings.getBOOL("RenderNsightDebugSupport"); LLVertexBuffer::sUseVAO = gSavedSettings.getBOOL("RenderUseVAO"); LLImageGL::sGlobalUseAnisotropic = gSavedSettings.getBOOL("RenderAnisotropic"); LLImageGL::sCompressTextures = gSavedSettings.getBOOL("RenderCompressTextures"); @@ -1100,6 +1101,7 @@ bool LLAppViewer::init() } } +#if LL_RELEASE_FOR_DOWNLOAD char* PARENT = getenv("PARENT"); if (! (PARENT && std::string(PARENT) == "SL_Launcher")) { @@ -1112,6 +1114,7 @@ bool LLAppViewer::init() // him/herself in the foot. LLNotificationsUtil::add("RunLauncher"); } +#endif #if LL_WINDOWS if (gGLManager.mGLVersion < LLFeatureManager::getInstance()->getExpectedGLVersion()) -- cgit v1.2.3 From f6b770d062d4a1c88ada3ddded88bd60168751e7 Mon Sep 17 00:00:00 2001 From: "Graham Linden graham@lindenlab.com" Date: Thu, 15 Feb 2018 23:23:46 +0000 Subject: Mark RenderNsightDebugSupport as requiring restart (because it does). Remove nerfing of message to run SL_Launcher. --- indra/newview/llappviewer.cpp | 2 -- 1 file changed, 2 deletions(-) (limited to 'indra/newview/llappviewer.cpp') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 2b0b8064bd..a0750214a8 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1101,7 +1101,6 @@ bool LLAppViewer::init() } } -#if LL_RELEASE_FOR_DOWNLOAD char* PARENT = getenv("PARENT"); if (! (PARENT && std::string(PARENT) == "SL_Launcher")) { @@ -1114,7 +1113,6 @@ bool LLAppViewer::init() // him/herself in the foot. LLNotificationsUtil::add("RunLauncher"); } -#endif #if LL_WINDOWS if (gGLManager.mGLVersion < LLFeatureManager::getInstance()->getExpectedGLVersion()) -- cgit v1.2.3 From 481713000b4b45f2ce6d397aa3326520bbb9da16 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Thu, 22 Feb 2018 15:23:14 +0200 Subject: MAINT-8183 Fixed some exit issues and crashes --- indra/newview/llappviewer.cpp | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'indra/newview/llappviewer.cpp') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index a0750214a8..85e94d57e8 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1645,7 +1645,10 @@ bool LLAppViewer::cleanup() LLEventPumps::instance().reset(); //dump scene loading monitor results - LLSceneMonitor::instance().dumpToFile(gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "scene_monitor_results.csv")); + if (LLSceneMonitor::instanceExists()) + { + LLSceneMonitor::instance().dumpToFile(gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "scene_monitor_results.csv")); + } // There used to be an 'if (LLFastTimerView::sAnalyzePerformance)' block // here, completely redundant with the one that occurs later in this same @@ -1687,8 +1690,11 @@ bool LLAppViewer::cleanup() // Give any remaining SLPlugin instances a chance to exit cleanly. LLPluginProcessParent::shutdown(); - LLVoiceClient::getInstance()->terminate(); - + if (LLVoiceClient::instanceExists()) + { + LLVoiceClient::getInstance()->terminate(); + } + disconnectViewer(); LL_INFOS() << "Viewer disconnected" << LL_ENDL; @@ -1743,7 +1749,10 @@ bool LLAppViewer::cleanup() // Note: this is where gLocalSpeakerMgr and gActiveSpeakerMgr used to be deleted. - LLWorldMap::getInstance()->reset(); // release any images + if (LLWorldMap::instanceExists()) + { + LLWorldMap::getInstance()->reset(); // release any images + } LLCalc::cleanUp(); @@ -1916,10 +1925,16 @@ bool LLAppViewer::cleanup() LLURLHistory::saveFile("url_history.xml"); // save mute list. gMuteList used to also be deleted here too. - LLMuteList::getInstance()->cache(gAgent.getID()); + if (gAgent.isInitialized() && LLMuteList::instanceExists()) + { + LLMuteList::getInstance()->cache(gAgent.getID()); + } //save call log list - LLConversationLog::instance().cache(); + if (LLConversationLog::instanceExists()) + { + LLConversationLog::instance().cache(); + } if (mPurgeOnExit) { -- cgit v1.2.3 From 2835e77640feb0236e54605f9f80b947c0ac5979 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 13 Feb 2018 15:40:21 +0200 Subject: MAINT-8203 Use the ReadOfflineMsgs cap to fetch IMs after login --- indra/newview/llappviewer.cpp | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) (limited to 'indra/newview/llappviewer.cpp') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 85e94d57e8..bd632c10dd 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -43,6 +43,7 @@ #include "llagentui.h" #include "llagentwearables.h" #include "llfloaterimcontainer.h" +#include "llimprocessing.h" #include "llwindow.h" #include "llviewerstats.h" #include "llviewerstatsrecorder.h" @@ -548,27 +549,6 @@ bool create_text_segment_icon_from_url_match(LLUrlMatch* match,LLTextBase* base) return true; } -void request_initial_instant_messages() -{ - static BOOL requested = FALSE; - if (!requested - && gMessageSystem - && LLMuteList::getInstance()->isLoaded() - && isAgentAvatarValid()) - { - // Auto-accepted inventory items may require the avatar object - // to build a correct name. Likewise, inventory offers from - // muted avatars require the mute list to properly mute. - LLMessageSystem* msg = gMessageSystem; - msg->newMessageFast(_PREHASH_RetrieveInstantMessages); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - gAgent.sendReliableMessage(); - requested = TRUE; - } -} - // Use these strictly for things that are constructed at startup, // or for things that are performance critical. JC static void settings_to_globals() @@ -4623,7 +4603,7 @@ void LLAppViewer::idle() // Must wait until both have avatar object and mute list, so poll // here. - request_initial_instant_messages(); + LLIMProcessing::requestOfflineMessages(); /////////////////////////////////// // -- cgit v1.2.3 From 36060a613a4372cb9c2c1938def2a2c137d917e4 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Wed, 21 Mar 2018 19:31:54 +0200 Subject: MAINT-8417 Fixed startup crash in doFrame() after failing to access vfs cache --- indra/newview/llappviewer.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'indra/newview/llappviewer.cpp') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index bd632c10dd..b15ea7d79f 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1399,7 +1399,8 @@ bool LLAppViewer::doFrame() // Scan keyboard for movement keys. Command keys and typing // are handled by windows callbacks. Don't do this until we're // done initializing. JC - if ((gHeadlessClient || gViewerWindow->getWindow()->getVisible()) + if (gViewerWindow + && (gHeadlessClient || gViewerWindow->getWindow()->getVisible()) && gViewerWindow->getActive() && !gViewerWindow->getWindow()->getMinimized() && LLStartUp::getStartupState() == STATE_STARTED -- cgit v1.2.3 From 976dab16a307d16c277a50c6f9582781731a352d Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Fri, 23 Mar 2018 19:14:41 +0200 Subject: MAINT-8417 Don't run display or startup if window is not initialized --- indra/newview/llappviewer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'indra/newview/llappviewer.cpp') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index b15ea7d79f..c33c0d5684 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -959,10 +959,11 @@ bool LLAppViewer::init() if (!initCache()) { + LL_WARNS("InitInfo") << "Failed to init cache" << LL_ENDL; std::ostringstream msg; msg << LLTrans::getString("MBUnableToAccessFile"); OSMessageBox(msg.str(),LLStringUtil::null,OSMB_OK); - return 1; + return 0; } LL_INFOS("InitInfo") << "Cache initialization is done." << LL_ENDL ; @@ -1431,7 +1432,7 @@ bool LLAppViewer::doFrame() // Render scene. // *TODO: Should we run display() even during gHeadlessClient? DK 2011-02-18 - if (!LLApp::isExiting() && !gHeadlessClient) + if (!LLApp::isExiting() && !gHeadlessClient && gViewerWindow) { pingMainloopTimeout("Main:Display"); gGLActive = TRUE; -- cgit v1.2.3