Tracking down stalls in llpumpio and agent updates.
parent
4533d1b59b
commit
8eab0f9b41
|
|
@ -4,25 +4,31 @@
|
|||
* @date 2004-11-21
|
||||
* @brief Implementation of the i/o pump and related functions.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2004&license=viewerlgpl$
|
||||
* $LicenseInfo:firstyear=2004&license=viewergpl$
|
||||
*
|
||||
* Copyright (c) 2004-2009, Linden Research, Inc.
|
||||
*
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
||||
* to you under the terms of the GNU General Public License, version 2.0
|
||||
* ("GPL"), unless you have obtained a separate licensing agreement
|
||||
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
||||
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
||||
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
* There are special exceptions to the terms and conditions of the GPL as
|
||||
* it is applied to this Source Code. View the full text of the exception
|
||||
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
||||
* online at
|
||||
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
* By copying, modifying or distributing this software, you acknowledge
|
||||
* that you have read and understood your obligations described above,
|
||||
* and agree to abide by those obligations.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
||||
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
||||
* COMPLETENESS OR PERFORMANCE.
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
|
|
@ -438,13 +444,13 @@ void LLPumpIO::pump()
|
|||
pump(DEFAULT_POLL_TIMEOUT);
|
||||
}
|
||||
|
||||
static LLFastTimer::DeclareTimer FTM_PUMP("Pump");
|
||||
static LLFastTimer::DeclareTimer FTM_PUMP_IO("Pump IO");
|
||||
|
||||
//timeout is in microseconds
|
||||
void LLPumpIO::pump(const S32& poll_timeout)
|
||||
{
|
||||
LLMemType m1(LLMemType::MTYPE_IO_PUMP);
|
||||
LLFastTimer t1(FTM_PUMP);
|
||||
LLFastTimer t1(FTM_PUMP_IO);
|
||||
//llinfos << "LLPumpIO::pump()" << llendl;
|
||||
|
||||
// Run any pending runners.
|
||||
|
|
@ -772,6 +778,8 @@ bool LLPumpIO::respond(
|
|||
return true;
|
||||
}
|
||||
|
||||
static LLFastTimer::DeclareTimer FTM_PUMP_CALLBACK_CHAIN("Chain");
|
||||
|
||||
void LLPumpIO::callback()
|
||||
{
|
||||
LLMemType m1(LLMemType::MTYPE_IO_PUMP);
|
||||
|
|
@ -793,6 +801,7 @@ void LLPumpIO::callback()
|
|||
callbacks_t::iterator end = mCallbacks.end();
|
||||
for(; it != end; ++it)
|
||||
{
|
||||
LLFastTimer t(FTM_PUMP_CALLBACK_CHAIN);
|
||||
// it's always the first and last time for respone chains
|
||||
(*it).mHead = (*it).mChainLinks.begin();
|
||||
(*it).mInit = true;
|
||||
|
|
|
|||
|
|
@ -922,6 +922,11 @@ 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");
|
||||
static LLFastTimer::DeclareTimer FTM_AGENT_AUTOPILOT("Autopilot");
|
||||
static LLFastTimer::DeclareTimer FTM_AGENT_UPDATE("Update");
|
||||
|
||||
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();
|
||||
|
|
@ -3495,9 +3510,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;
|
||||
|
|
@ -3508,6 +3526,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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue