diff options
| author | Dave Parks <davep@lindenlab.com> | 2010-04-07 13:50:47 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2010-04-07 13:50:47 -0500 | 
| commit | 666c7c429b7f38f7c93bf6c287157c2e3ab9ccd7 (patch) | |
| tree | 8f3e9399dbc5cab6c28c5992b579368bb0aa8949 /indra/newview/llappviewer.cpp | |
| parent | 8ac6310020bd2d524c97c729c29a0afe4a529ecf (diff) | |
| parent | b6d3d2281b855448bbeec33b2d229222d75cd6b1 (diff) | |
merge
Diffstat (limited to 'indra/newview/llappviewer.cpp')
| -rw-r--r-- | indra/newview/llappviewer.cpp | 103 | 
1 files changed, 81 insertions, 22 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 8e959993fe..a24c1a9d36 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -49,6 +49,7 @@  #include "llwindow.h"  #include "llviewerstats.h"  #include "llmd5.h" +#include "llmeshrepository.h"  #include "llpumpio.h"  #include "llmimetypes.h"  #include "llslurl.h" @@ -78,6 +79,7 @@  #include "llteleporthistory.h"  #include "lllocationhistory.h"  #include "llfasttimerview.h" +#include "llviewermenufile.h"  #include "llvoicechannel.h"  #include "llvoavatarself.h"  #include "llsidetray.h" @@ -922,6 +924,9 @@ static LLFastTimer::DeclareTimer FTM_LFS("LFS Thread");  static LLFastTimer::DeclareTimer FTM_PAUSE_THREADS("Pause Threads");  static LLFastTimer::DeclareTimer FTM_IDLE("Idle");  static LLFastTimer::DeclareTimer FTM_PUMP("Pump"); +static LLFastTimer::DeclareTimer FTM_PUMP_ARES("Ares"); +static LLFastTimer::DeclareTimer FTM_PUMP_SERVICE("Service"); +static LLFastTimer::DeclareTimer FTM_SERVICE_CALLBACK("Callback");  bool LLAppViewer::mainLoop()  { @@ -1033,10 +1038,20 @@ bool LLAppViewer::mainLoop()  						LLMemType mt_ip(LLMemType::MTYPE_IDLE_PUMP);  						pingMainloopTimeout("Main:ServicePump");				  						LLFastTimer t4(FTM_PUMP); -						gAres->process(); -						// this pump is necessary to make the login screen show up -						gServicePump->pump(); -						gServicePump->callback(); +						{ +							LLFastTimer t(FTM_PUMP_ARES); +							gAres->process(); +						} +						{ +							LLFastTimer t(FTM_PUMP_SERVICE); +							// this pump is necessary to make the login screen show up +							gServicePump->pump(); + +							{ +								LLFastTimer t(FTM_SERVICE_CALLBACK); +								gServicePump->callback(); +							} +						}  					}  					resumeMainloopTimeout(); @@ -1287,6 +1302,9 @@ bool LLAppViewer::cleanup()  	llinfos << "Cleaning Up" << llendflush; +	// shut down mesh streamer +	gMeshRepo.shutdown(); +  	// Must clean up texture references before viewer window is destroyed.  	LLHUDManager::getInstance()->updateEffects();  	LLHUDObject::updateAll(); @@ -1565,6 +1583,8 @@ bool LLAppViewer::cleanup()  	sTextureFetch->shutDownTextureCacheThread() ;  	sTextureFetch->shutDownImageDecodeThread() ; +	LLFilePickerThread::cleanupClass(); +  	delete sTextureCache;      sTextureCache = NULL;  	delete sTextureFetch; @@ -1712,6 +1732,11 @@ bool LLAppViewer::initThreads()  		mFastTimerLogThread->start();  	} +	// Mesh streaming and caching +	gMeshRepo.init(); + +	LLFilePickerThread::initClass(); +  	// *FIX: no error handling here!  	return true;  } @@ -2425,6 +2450,7 @@ bool LLAppViewer::initWindow()  		gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE );  		gPipeline.init(); +		  		stop_glerror();  		gViewerWindow->initGLDefaults(); @@ -3427,6 +3453,10 @@ static LLFastTimer::DeclareTimer FTM_OBJECTLIST_UPDATE("Update Objectlist");  static LLFastTimer::DeclareTimer FTM_REGION_UPDATE("Update Region");  static LLFastTimer::DeclareTimer FTM_WORLD_UPDATE("Update World");  static LLFastTimer::DeclareTimer FTM_NETWORK("Network"); +static LLFastTimer::DeclareTimer FTM_AGENT_NETWORK("Agent Network"); +static LLFastTimer::DeclareTimer FTM_AGENT_AUTOPILOT("Autopilot"); +static LLFastTimer::DeclareTimer FTM_AGENT_UPDATE("Update"); +static LLFastTimer::DeclareTimer FTM_VLMANAGER("VL Manager");  ///////////////////////////////////////////////////////  // idle() @@ -3447,6 +3477,8 @@ void LLAppViewer::idle()  	LLEventTimer::updateClass();  	LLCriticalDamp::updateInterpolants();  	LLMortician::updateClass(); +	LLFilePickerThread::clearDead();  //calls LLFilePickerThread::notify() +  	F32 dt_raw = idle_timer.getElapsedTimeAndResetF32();  	// Cap out-of-control frame times @@ -3497,7 +3529,7 @@ void LLAppViewer::idle()  	if (!gDisconnected)  	{ -		LLFastTimer t(FTM_NETWORK); +		LLFastTimer t(FTM_AGENT_NETWORK);  		// Update spaceserver timeinfo  	    LLWorld::getInstance()->setSpaceTimeUSec(LLWorld::getInstance()->getSpaceTimeUSec() + (U32)(dt_raw * SEC_TO_MICROSEC)); @@ -3512,9 +3544,12 @@ void LLAppViewer::idle()  			gAgent.moveYaw(-1.f);  		} -	    // Handle automatic walking towards points -	    gAgentPilot.updateTarget(); -	    gAgent.autoPilot(&yaw); +		{ +			LLFastTimer t(FTM_AGENT_AUTOPILOT); +			// Handle automatic walking towards points +			gAgentPilot.updateTarget(); +			gAgent.autoPilot(&yaw); +		}  	    static LLFrameTimer agent_update_timer;  	    static U32 				last_control_flags; @@ -3525,6 +3560,7 @@ void LLAppViewer::idle()  	    if (flags_changed || (agent_update_time > (1.0f / (F32) AGENT_UPDATES_PER_SECOND)))  	    { +			LLFastTimer t(FTM_AGENT_UPDATE);  		    // Send avatar and camera info  		    last_control_flags = gAgent.getControlFlags();  		    send_agent_update(TRUE); @@ -3690,7 +3726,7 @@ void LLAppViewer::idle()  	//  	{ -		LLFastTimer t(FTM_NETWORK); +		LLFastTimer t(FTM_VLMANAGER);  		gVLManager.unpackData();  	} @@ -3936,6 +3972,11 @@ static F32 CheckMessagesMaxTime = CHECK_MESSAGES_DEFAULT_MAX_TIME;  #endif  static LLFastTimer::DeclareTimer FTM_IDLE_NETWORK("Idle Network"); +static LLFastTimer::DeclareTimer FTM_MESSAGE_ACKS("Message Acks"); +static LLFastTimer::DeclareTimer FTM_RETRANSMIT("Retransmit"); +static LLFastTimer::DeclareTimer FTM_TIMEOUT_CHECK("Timeout Check"); +static LLFastTimer::DeclareTimer FTM_DYNAMIC_THROTTLE("Dynamic Throttle"); +static LLFastTimer::DeclareTimer FTM_CHECK_REGION_CIRCUIT("Check Region Circuit");  void LLAppViewer::idleNetwork()  { @@ -3989,7 +4030,10 @@ void LLAppViewer::idleNetwork()  		}  		// Handle per-frame message system processing. -		gMessageSystem->processAcks(); +		{ +			LLFastTimer ftm(FTM_MESSAGE_ACKS); +			gMessageSystem->processAcks(); +		}  #ifdef TIME_THROTTLE_MESSAGES  		if (total_time >= CheckMessagesMaxTime) @@ -4027,26 +4071,41 @@ void LLAppViewer::idleNetwork()  	LLViewerStats::getInstance()->mNumNewObjectsStat.addValue(gObjectList.mNumNewObjects);  	// Retransmit unacknowledged packets. -	gXferManager->retransmitUnackedPackets(); -	gAssetStorage->checkForTimeouts(); +	{ +		LLFastTimer ftm(FTM_RETRANSMIT); +		gXferManager->retransmitUnackedPackets(); +	} + +	{ +		LLFastTimer ftm(FTM_TIMEOUT_CHECK); +		gAssetStorage->checkForTimeouts(); +	} +  	llpushcallstacks ; -	gViewerThrottle.updateDynamicThrottle(); + +	{ +		LLFastTimer ftm(FTM_DYNAMIC_THROTTLE); +		gViewerThrottle.updateDynamicThrottle(); +	}  	llpushcallstacks ;  	// Check that the circuit between the viewer and the agent's current  	// region is still alive -	LLViewerRegion *agent_region = gAgent.getRegion(); -	if (agent_region && (LLStartUp::getStartupState()==STATE_STARTED))  	{ -		LLUUID this_region_id = agent_region->getRegionID(); -		bool this_region_alive = agent_region->isAlive(); -		if ((mAgentRegionLastAlive && !this_region_alive) // newly dead -		    && (mAgentRegionLastID == this_region_id)) // same region +		LLFastTimer ftm(FTM_CHECK_REGION_CIRCUIT); +		LLViewerRegion *agent_region = gAgent.getRegion(); +		if (agent_region && (LLStartUp::getStartupState()==STATE_STARTED))  		{ -			forceDisconnect(LLTrans::getString("AgentLostConnection")); +			LLUUID this_region_id = agent_region->getRegionID(); +			bool this_region_alive = agent_region->isAlive(); +			if ((mAgentRegionLastAlive && !this_region_alive) // newly dead +				&& (mAgentRegionLastID == this_region_id)) // same region +			{ +				forceDisconnect(LLTrans::getString("AgentLostConnection")); +			} +			mAgentRegionLastID = this_region_id; +			mAgentRegionLastAlive = this_region_alive;  		} -		mAgentRegionLastID = this_region_id; -		mAgentRegionLastAlive = this_region_alive;  	}  	llpushcallstacks ;  }  | 
