Fix crash if periodic av metric update happens after disconnect.

This commit is contained in:
Shyotl
2013-02-19 21:54:35 -06:00
parent 8d09539fcc
commit beeef8d5b9
3 changed files with 11 additions and 6 deletions

View File

@@ -3158,7 +3158,7 @@ void LLAppViewer::requestQuit()
// Try to send last batch of avatar rez metrics.
if (!gDisconnected && isAgentAvatarValid())
{
gAgentAvatarp->updateAvatarRezMetrics(true); // force a last packet to be sent.
LLVOAvatarSelf::updateAvatarRezMetrics(true); // force a last packet to be sent.
}
LLHUDEffectSpiral *effectp = (LLHUDEffectSpiral*)LLHUDManager::getInstance()->createViewerEffect(LLHUDObject::LL_HUD_EFFECT_POINT, TRUE);

View File

@@ -228,7 +228,7 @@ void LLVOAvatarSelf::initInstance()
}
//doPeriodically(output_self_av_texture_diagnostics, 30.0);
doPeriodically(boost::bind(&LLVOAvatarSelf::updateAvatarRezMetrics, this, false), 5.0);
doPeriodically(boost::bind(&LLVOAvatarSelf::updateAvatarRezMetrics, false), 5.0);
}
// virtual
@@ -2247,6 +2247,11 @@ private:
bool LLVOAvatarSelf::updateAvatarRezMetrics(bool force_send)
{
//Can be called via event system after agent avatar has been removed.
//Also skip if quit has been requested, because we already send out rez metrics when entering the quit state.
if(!isAgentAvatarValid() || LLAppViewer::instance()->quitRequested())
return false;
const F32 AV_METRICS_INTERVAL_QA = 30.0;
F32 send_period = 300.0;
if (gSavedSettings.getBOOL("QAModeMetrics"))
@@ -2254,13 +2259,13 @@ bool LLVOAvatarSelf::updateAvatarRezMetrics(bool force_send)
send_period = AV_METRICS_INTERVAL_QA;
}
if (force_send || mTimeSinceLastRezMessage.getElapsedTimeF32() > send_period)
if (force_send || gAgentAvatarp->mTimeSinceLastRezMessage.getElapsedTimeF32() > send_period)
{
// Stats for completed phases have been getting logged as they
// Stats for completed phases have been getting l ogged as they
// complete. This will give us stats for any timers that
// haven't finished as of the metric's being sent.
LLVOAvatar::logPendingPhasesAllAvatars();
sendViewerAppearanceChangeMetrics();
gAgentAvatarp->sendViewerAppearanceChangeMetrics();
}
return false;

View File

@@ -380,7 +380,7 @@ public:
};
LLTimer mTimeSinceLastRezMessage;
bool updateAvatarRezMetrics(bool force_send);
static bool updateAvatarRezMetrics(bool force_send);
std::vector<LLSD> mPendingTimerRecords;
void addMetricsTimerRecord(const LLSD& record);