目标:(二十三)中问题75
请求经过PagerLoader加载时初始化为RUNNING
osgEarthDrivers/engine_rex/Loader.cpp
bool
PagerLoader::load(Loader::Request* request, float priority, osg::NodeVisitor& nv)
{
request->setState(Request::RUNNING);
}
在PagerLoader将请求加入合并队列_mergeQueue时设为MERGING
osgEarthDrivers/engine_rex/Loader.cpp
bool
PagerLoader::addChild(osg::Node* node)
{
_mergeQueue.insert( req );
req->setState( Request::MERGING );
}
在PagerLoader遍历合并队列,执行完请求的apply()时设置为FINISHED
osgEarthDrivers/engine_rex/Loader.cpp
void
PagerLoader::traverse(osg::NodeVisitor& nv)
{
for(count=0; count < _mergesPerFrame && !_mergeQueue.empty(); ++count)
{
Request* req = _mergeQueue.begin()->get();
if ( req && req->_lastTick >= _checkpoint )
{
OE_START_TIMER(req_apply);
req->apply( getFrameStamp() );
double s = OE_STOP_TIMER(req_apply);
req->setState(Request::FINISHED);
}
}
}
PagerLoader在遍历请求时,如果存在以下情况则将请求状态会设为IDLE,并从请求列表中删除该请求。(1)请求的状态已经设置为FINISHED(为什么不在设置FINISHED状态时直接删除请求呢);(2)超过两帧都没有将请求放入合并队列;(3)超过1800帧都没有从合并队列里处理完。
osgEarthDrivers/engine_rex/Loader.cpp
voi
osgEarth Rex引擎请求状态解析:IDLE, RUNNING, MERGING, FINISHED

本文详细分析了osgEarth的Rex引擎中请求的四个状态:IDLE, RUNNING, MERGING, FINISHED。在请求处理过程中,它们分别代表了请求的不同阶段,例如初始化、合并、完成等。同时,文章还探讨了状态变化的条件,如何时从请求列表中删除已完成的请求。"
124772912,9130843,正则表达式在登录页面表单验证的应用,"['javascript', '前端开发', '正则表达式', '表单验证', '登录界面']
最低0.47元/天 解锁文章
470

被折叠的 条评论
为什么被折叠?



