]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/splash.cxx
Merge branch 'next' into comm-subsystem
[flightgear.git] / src / Main / splash.cxx
index 403617891f2027276978b7110de7146a8bcfc845..5708c72e159fa1acd6d3d4e4b96e8f38a98ad6e2 100644 (file)
@@ -146,8 +146,8 @@ public:
 
 char *genNameString()
 {
-    string website = "http://www.flightgear.org";
-    string programName = "FlightGear";
+    std::string website = "http://www.flightgear.org";
+    std::string programName = "FlightGear";
     char *name = new char[26];
     name[20] = 114;
     name[8] = 119;
@@ -187,8 +187,19 @@ static osg::Node* fgCreateSplashCamera()
   fgSetString("/sim/startup/program-name", namestring);
   delete[] namestring;
 
-  SGPath tpath( globals->get_fg_root() );
-  if (splash_texture == NULL || !strcmp(splash_texture, "")) {
+  SGPath tpath;
+  if (splash_texture  && strcmp(splash_texture, "")) {
+      tpath = globals->resolve_maybe_aircraft_path(splash_texture);
+      if (tpath.isNull())
+      {
+          SG_LOG( SG_GENERAL, SG_ALERT, "Cannot find splash screen file '" << splash_texture
+                  << "'. Using default." );
+      }
+  }
+
+  if (tpath.isNull()) {
+    // no splash screen specified - select random image
+    tpath = globals->get_fg_root();
     // load in the texture data
     int num = (int)(sg_random() * 5.0 + 1.0);
     char num_str[5];
@@ -197,8 +208,7 @@ static osg::Node* fgCreateSplashCamera()
     tpath.append( "Textures/Splash" );
     tpath.concat( num_str );
     tpath.concat( ".png" );
-  } else
-    tpath.append( splash_texture );
+  }
 
   osg::Texture2D* splashTexture = new osg::Texture2D;
   splashTexture->setImage(osgDB::readImageFile(tpath.c_str()));
@@ -294,6 +304,7 @@ static osg::Node* fgCreateSplashCamera()
   text->setPosition(osg::Vec3(0, -0.92, 0));
   text->setAlignment(osgText::Text::CENTER_CENTER);
   SGPropertyNode* prop = fgGetNode("/sim/startup/splash-progress-text", true);
+  prop->setStringValue("initializing");
   text->setUpdateCallback(new FGSplashTextUpdateCallback(prop));
   geode->addDrawable(text);
 
@@ -354,11 +365,9 @@ osg::Node* fgCreateSplashNode() {
 void fgSplashInit () {
   SG_LOG( SG_GENERAL, SG_INFO, "Initializing splash screen" );
   globals->get_renderer()->splashinit();
-  fgRequestRedraw();
 }
 
 void fgSplashProgress ( const char *text ) {
   SG_LOG( SG_GENERAL, SG_INFO, "Splash screen progress " << text );
   fgSetString("/sim/startup/splash-progress-text", text);
-  fgRequestRedraw();
 }