Merge branch 'release/2026.01' of https://github.com/secondlife/viewer
# Conflicts: # autobuild.xmlmaster
commit
7260da8d49
|
|
@ -437,7 +437,7 @@ struct LLWindowWin32::LLWindowWin32Thread : public LL::ThreadPool
|
|||
{
|
||||
if (!mWindowTimeout)
|
||||
{
|
||||
mWindowTimeout = std::make_unique<LLWatchdogTimeout>("mainloop");
|
||||
mWindowTimeout = std::make_unique<LLWatchdogTimeout>("WindowThread");
|
||||
// supposed to be executed within run(),
|
||||
// so no point checking if thread is alive
|
||||
resumeTimeout("TimeoutInit");
|
||||
|
|
|
|||
|
|
@ -1937,17 +1937,20 @@ bool LLAppViewer::doFrame()
|
|||
|
||||
if (LLApp::isExiting())
|
||||
{
|
||||
pingMainloopTimeout("Main:qSnapshot");
|
||||
// Save snapshot for next time, if we made it through initialization
|
||||
if (STATE_STARTED == LLStartUp::getStartupState())
|
||||
{
|
||||
saveFinalSnapshot();
|
||||
}
|
||||
|
||||
pingMainloopTimeout("Main:TerminateVoice");
|
||||
if (LLVoiceClient::instanceExists())
|
||||
{
|
||||
LLVoiceClient::getInstance()->terminate();
|
||||
}
|
||||
|
||||
pingMainloopTimeout("Main:TerminatePump");
|
||||
delete gServicePump;
|
||||
gServicePump = NULL;
|
||||
|
||||
|
|
@ -3776,7 +3779,6 @@ bool LLAppViewer::initWindow()
|
|||
app->createErrorMarker(LAST_EXEC_FROZE);
|
||||
}
|
||||
});
|
||||
gViewerWindow->getWindow()->initWatchdog();
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Init group notices, IMs and chiclets position before the
|
||||
|
|
@ -4973,6 +4975,7 @@ void LLAppViewer::requestQuit()
|
|||
return;
|
||||
}
|
||||
|
||||
pingMainloopTimeout("Main:qMetrics");
|
||||
// Try to send metrics back to the grid
|
||||
metricsSend(!gDisconnected);
|
||||
|
||||
|
|
@ -4988,6 +4991,7 @@ void LLAppViewer::requestQuit()
|
|||
LLHUDManager::getInstance()->sendEffects();
|
||||
effectp->markDead() ;//remove it.
|
||||
|
||||
pingMainloopTimeout("Main:qFloaters");
|
||||
// Attempt to close all floaters that might be
|
||||
// editing things.
|
||||
if (gFloaterView)
|
||||
|
|
@ -4996,6 +5000,7 @@ void LLAppViewer::requestQuit()
|
|||
gFloaterView->closeAllChildren(true);
|
||||
mClosingFloaters = true;
|
||||
}
|
||||
pingMainloopTimeout("Main:qStats");
|
||||
|
||||
// Send preferences once, when exiting
|
||||
// <FS:Ansariel> Don't send all non-default settings which might result in a violation of GDPR
|
||||
|
|
@ -5005,6 +5010,7 @@ void LLAppViewer::requestQuit()
|
|||
|
||||
gLogoutTimer.reset();
|
||||
mQuitRequested = true;
|
||||
pingMainloopTimeout("Main:LoggingOut");
|
||||
}
|
||||
|
||||
static bool finish_quit(const LLSD& notification, const LLSD& response)
|
||||
|
|
@ -6397,6 +6403,7 @@ void LLAppViewer::outOfMemorySoftQuit()
|
|||
LLLFSThread::sLocal->pause();
|
||||
gLogoutTimer.reset();
|
||||
mQuitRequested = true;
|
||||
destroyMainloopTimeout();
|
||||
|
||||
LLError::LLUserWarningMsg::showOutOfMemory();
|
||||
}
|
||||
|
|
@ -6833,6 +6840,11 @@ void LLAppViewer::pingMainloopTimeout(std::string_view state)
|
|||
|
||||
F32 LLAppViewer::getMainloopTimeoutSec() const
|
||||
{
|
||||
if (isQuitting() || mQuitRequested)
|
||||
{
|
||||
constexpr F32 QUITTING_SECONDS = 240.f;
|
||||
return QUITTING_SECONDS;
|
||||
}
|
||||
if (LLStartUp::getStartupState() == STATE_STARTED
|
||||
&& gAgent.getTeleportState() == LLAgent::TELEPORT_NONE)
|
||||
{
|
||||
|
|
@ -6851,6 +6863,11 @@ void LLAppViewer::handleLoginComplete()
|
|||
{
|
||||
gLoggedInTime.start();
|
||||
initMainloopTimeout("Mainloop Init");
|
||||
LLWindow* viewer_window = gViewerWindow->getWindow();
|
||||
if (viewer_window) // in case of a headless client
|
||||
{
|
||||
viewer_window->initWatchdog();
|
||||
}
|
||||
|
||||
// Store some data to DebugInfo in case of a freeze.
|
||||
gDebugInfo["ClientInfo"]["Name"] = LLVersionInfo::instance().getChannel();
|
||||
|
|
|
|||
Loading…
Reference in New Issue