第二人生的源码分析(七十四)LLStartUp类维护启动状态机

像第二人生这么复杂的大型程序,从你双击程序开始,直到它运行到真正的图形界面出来为止,经历的过程是漫长而复杂的,总共经历的状态就有 22个,意思就是说每个状态里只会做一件事情,如果做那件事情不成功就会运行失败。那么第二人生采用这种状态机有什么好处呢?在我看来采用状态机的好处是利于把复杂的过程分解,利于把漫长的状态提示给用户,利于开发人员调试和分析,利于程序跳转到不同的状态。下面就来先看这个类的声明代码:
#001 class LLStartUp
#002 {
#003 public:
 
判断是否可以全屏运行程序。
#004     static bool canGoFullscreen();
#005         // returns true if we are far enough along in startup to allow
#006         // going full screen
#007 
 
设置状态变量。
#008     // Always use this to set gStartupState so changes are logged
#009     static void setStartupState( S32 state );
 
获取当前状态变量。
#010     static S32 getStartupState()               { return gStartupState;     };
#011 
 
让游览器显示 URL串的内容。
#012     static bool dispatchURL();
#013         // if we have a SLURL or sim string ("Ahern/123/45") that started
#014         // the viewer, dispatch it
#015 
 
保存 SL的URL命令。
#016     static std::string sSLURLCommand;
#017         // *HACK: On startup, if we were passed a secondlife://app/do/foo
#018         // command URL, store it for later processing.
#019 
#020 protected:
 
保存启动运行状态。
#021     static S32 gStartupState;           // Do not set directly, use LLStartup::setStartupState
#022 };
 
 
 
下面再来分析几个函数的实现代码:
#001 bool LLStartUp::canGoFullscreen()
#002 {
 
只有大于 STATE_WORLD_INIT状态,也就是渲染第二人生时才允许全屏显示。
#003     return gStartupState >= STATE_WORLD_INIT;
#004 }
 
 
调用这个函数来保存不同时候的状态,并且把这个状态输出到调试窗口,方便开发人员查找出错的原因。
#001 // static
#002 void LLStartUp::setStartupState( S32 state )
#003 {
#004     llinfos << "Startup state changing from " << gStartupState << " to " << state << llendl;
#005     gStartupState = state;
#006 }
Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值