SH-3406 WIP convert fast timers to lltrace system

fixed crash when sending viewer asset stats
master
Richard Linden 2012-11-30 15:48:22 -08:00
parent 02d503bf8f
commit ca37317a14
4 changed files with 22 additions and 6 deletions

View File

@ -58,10 +58,6 @@ Recording::Recording( const Recording& other )
mStackTimers = other.mStackTimers;
LLStopWatchControlsMixin::initTo(other.getPlayState());
if (other.isStarted())
{
handleStart();
}
}
@ -127,6 +123,15 @@ bool Recording::isPrimary() const
return mCounts->isPrimary();
}
void Recording::makeUnique()
{
mCountsFloat.makeUnique();
mMeasurementsFloat.makeUnique();
mCounts.makeUnique();
mMeasurements.makeUnique();
mStackTimers.makeUnique();
}
void Recording::appendRecording( const Recording& other )
{
mCountsFloat.write()->addSamples(*other.mCountsFloat);

View File

@ -112,6 +112,8 @@ namespace LLTrace
void makePrimary();
bool isPrimary() const;
void makeUnique();
void appendRecording(const Recording& other);
void update();

View File

@ -438,7 +438,7 @@ LLAppViewer::LLUpdaterInfo *LLAppViewer::sUpdaterInfo = NULL ;
//----------------------------------------------------------------------------
// Metrics logging control constants
//----------------------------------------------------------------------------
static const F32 METRICS_INTERVAL_DEFAULT = 30.0;
static const F32 METRICS_INTERVAL_DEFAULT = 600.0;
static const F32 METRICS_INTERVAL_QA = 30.0;
static F32 app_metrics_interval = METRICS_INTERVAL_DEFAULT;
static bool app_metrics_qa_mode = false;

View File

@ -250,9 +250,18 @@ LLViewerAssetStats::LLViewerAssetStats(const LLViewerAssetStats & src)
{
src.mCurRecording->update();
mRegionRecordings = src.mRegionRecordings;
mCurRecording = &mRegionRecordings[mRegionHandle];
mCurRecording->stop();
// assume this is being passed to another thread, so make sure we have unique copies of recording data
for (PerRegionRecordingContainer::iterator it = mRegionRecordings.begin(), end_it = mRegionRecordings.end();
it != end_it;
++it)
{
it->second.makeUnique();
}
LLStopWatchControlsMixin::initTo(src.getPlayState());
}