1
0
Fork 0

fgpanel: fixed some error handling/setup issues

- Provide error message when fgdata path is missing.
- Exit game mode when closing/aborting program (show mouse cursor etc).
- Support absolute paths for "--panel" parameter.
- Don't crash when a font is missing.
This commit is contained in:
ThorstenB 2011-09-30 22:20:00 +02:00
parent dbda2fb95d
commit be720b424a
3 changed files with 20 additions and 0 deletions

View file

@ -56,6 +56,8 @@ FGGLApplication::FGGLApplication( const char * aName, int argc, char ** argv ) :
FGGLApplication::~FGGLApplication() FGGLApplication::~FGGLApplication()
{ {
if (gameMode)
glutLeaveGameMode();
} }
void FGGLApplication::DisplayCallback() void FGGLApplication::DisplayCallback()

View file

@ -90,6 +90,15 @@ FGPanelApplication::FGPanelApplication( int argc, char ** argv ) :
throw exception(); throw exception();
} }
// see if we got a valid fgdata path
SGPath BaseCheck(ApplicationProperties::root);
BaseCheck.append("version");
if (!BaseCheck.exists())
{
cerr << "Missing base package. Use --fg-root=path_to_fgdata" << endl;
throw exception();
}
try { try {
SGPath tpath = ApplicationProperties::GetRootPath( panelFilename.c_str() ); SGPath tpath = ApplicationProperties::GetRootPath( panelFilename.c_str() );
readProperties( tpath.str(), ApplicationProperties::Properties ); readProperties( tpath.str(), ApplicationProperties::Properties );
@ -284,8 +293,12 @@ double ApplicationProperties::getDouble( const char * name, double def )
if( n == NULL ) return def; if( n == NULL ) return def;
return n->getDoubleValue(); return n->getDoubleValue();
} }
SGPath ApplicationProperties::GetRootPath( const char * sub ) SGPath ApplicationProperties::GetRootPath( const char * sub )
{ {
SGPath subpath( sub );
if ( subpath.isAbsolute() )
return subpath;
SGPath path( ApplicationProperties::root ); SGPath path( ApplicationProperties::root );
if( sub != NULL ) if( sub != NULL )
path.append( sub ); path.append( sub );

View file

@ -804,6 +804,11 @@ FGTextLayer::draw ()
transform(); transform();
text_renderer.setFont(ApplicationProperties::fontCache.getTexFont(_font_name.c_str())); text_renderer.setFont(ApplicationProperties::fontCache.getTexFont(_font_name.c_str()));
if (!text_renderer.getFont())
{
SG_LOG( SG_COCKPIT, SG_ALERT, "Missing font file: " << _font_name );
return;
}
text_renderer.setPointSize(_pointSize); text_renderer.setPointSize(_pointSize);
text_renderer.begin(); text_renderer.begin();