1
0
Fork 0

Make HUD loading lazy upon first show.

This commit is contained in:
James Turner 2012-05-15 18:17:39 +01:00
parent 2999675234
commit e06b3df11e
2 changed files with 28 additions and 11 deletions

View file

@ -66,6 +66,7 @@ HUD::HUD() :
_alpha_clamp(fgGetNode("/sim/hud/color/alpha-clamp", true)),
_brightness(fgGetNode("/sim/hud/color/brightness", true)),
_visible(false),
_loaded(false),
_antialiased(false),
_transparent(false),
_a(0.67), // FIXME better names
@ -115,6 +116,7 @@ void HUD::init()
_font_renderer->setFont(_font);
_font_renderer->setPointSize(_font_size);
_text_list.setFont(_font_renderer);
_loaded = false;
currentColorChanged();
_currentPath->fireValueChanged();
@ -134,6 +136,8 @@ void HUD::deinit()
delete _clip_box;
_clip_box = NULL;
_loaded = false;
}
void HUD::reinit()
@ -427,7 +431,18 @@ void HUD::valueChanged(SGPropertyNode *node)
if (_listener_active)
return;
_listener_active = true;
if (!strcmp(node->getName(), "current-path")) {
bool loadNow = false;
_visible = _visibility->getBoolValue();
if (_visible && !_loaded) {
loadNow = true;
}
if (!strcmp(node->getName(), "current-path") && _visible) {
loadNow = true;
}
if (loadNow) {
int pathIndex = _currentPath->getIntValue();
SGPropertyNode* pathNode = fgGetNode("/sim/hud/path", pathIndex);
std::string path("Huds/default.xml");
@ -436,6 +451,7 @@ void HUD::valueChanged(SGPropertyNode *node)
SG_LOG(SG_INSTR, SG_INFO, "will load Hud from " << path);
}
_loaded = true;
load(path.c_str());
}
@ -446,7 +462,7 @@ void HUD::valueChanged(SGPropertyNode *node)
_scr_width = _scr_widthN->getIntValue();
_scr_height = _scr_heightN->getIntValue();
_visible = _visibility->getBoolValue();
_3Denabled = _3DenabledN->getBoolValue();
_transparent = _transparency->getBoolValue();
_antialiased = _antialiasing->getBoolValue();

View file

@ -228,6 +228,7 @@ private:
SGPropertyNode_ptr _alpha_clamp;
SGPropertyNode_ptr _brightness;
bool _visible;
bool _loaded;
bool _3Denabled;
bool _antialiased;
bool _transparent;