File diff r24217:df2f5854f1e3 → r24218:c32caa9f014d
src/openttd.cpp
Show inline comments
 
@@ -533,10 +533,10 @@ static const OptionData _options[] = {
 
 */
 
int openttd_main(int argc, char *argv[])
 
{
 
	char *musicdriver = nullptr;
 
	char *sounddriver = nullptr;
 
	char *videodriver = nullptr;
 
	char *blitter = nullptr;
 
	std::string musicdriver;
 
	std::string sounddriver;
 
	std::string videodriver;
 
	std::string blitter;
 
	std::string graphics_set;
 
	std::string sounds_set;
 
	std::string music_set;
 
@@ -566,19 +566,15 @@ int openttd_main(int argc, char *argv[])
 
		case 'I': graphics_set = mgo.opt; break;
 
		case 'S': sounds_set = mgo.opt; break;
 
		case 'M': music_set = mgo.opt; break;
 
		case 'm': free(musicdriver); musicdriver = stredup(mgo.opt); break;
 
		case 's': free(sounddriver); sounddriver = stredup(mgo.opt); break;
 
		case 'v': free(videodriver); videodriver = stredup(mgo.opt); break;
 
		case 'b': free(blitter); blitter = stredup(mgo.opt); break;
 
		case 'm': musicdriver = mgo.opt; break;
 
		case 's': sounddriver = mgo.opt; break;
 
		case 'v': videodriver = mgo.opt; break;
 
		case 'b': blitter = mgo.opt; break;
 
		case 'D':
 
			free(musicdriver);
 
			free(sounddriver);
 
			free(videodriver);
 
			free(blitter);
 
			musicdriver = stredup("null");
 
			sounddriver = stredup("null");
 
			videodriver = stredup("dedicated");
 
			blitter = stredup("null");
 
			musicdriver = "null";
 
			sounddriver = "null";
 
			videodriver = "dedicated";
 
			blitter = "null";
 
			dedicated = true;
 
			SetDebugString("net=6");
 
			if (mgo.opt != nullptr) {
 
@@ -746,8 +742,8 @@ int openttd_main(int argc, char *argv[])
 
	GfxInitPalettes();
 

	
 
	DEBUG(misc, 1, "Loading blitter...");
 
	if (blitter == nullptr && _ini_blitter != nullptr) blitter = stredup(_ini_blitter);
 
	_blitter_autodetected = StrEmpty(blitter);
 
	if (blitter.empty() && !_ini_blitter.empty()) blitter = _ini_blitter;
 
	_blitter_autodetected = blitter.empty();
 
	/* Activate the initial blitter.
 
	 * This is only some initial guess, after NewGRFs have been loaded SwitchNewGRFBlitter may switch to a different one.
 
	 *  - Never guess anything, if the user specified a blitter. (_blitter_autodetected)
 
@@ -758,16 +754,14 @@ int openttd_main(int argc, char *argv[])
 
			(_support8bpp != S8BPP_NONE && (BaseGraphics::GetUsedSet() == nullptr || BaseGraphics::GetUsedSet()->blitter == BLT_8BPP)) ||
 
			BlitterFactory::SelectBlitter("32bpp-anim") == nullptr) {
 
		if (BlitterFactory::SelectBlitter(blitter) == nullptr) {
 
			StrEmpty(blitter) ?
 
			blitter.empty() ?
 
				usererror("Failed to autoprobe blitter") :
 
				usererror("Failed to select requested blitter '%s'; does it exist?", blitter);
 
				usererror("Failed to select requested blitter '%s'; does it exist?", blitter.c_str());
 
		}
 
	}
 
	free(blitter);
 

	
 
	if (videodriver == nullptr && _ini_videodriver != nullptr) videodriver = stredup(_ini_videodriver);
 
	if (videodriver.empty() && !_ini_videodriver.empty()) videodriver = _ini_videodriver;
 
	DriverFactoryBase::SelectDriver(videodriver, Driver::DT_VIDEO);
 
	free(videodriver);
 

	
 
	InitializeSpriteSorter();
 

	
 
@@ -824,13 +818,11 @@ int openttd_main(int argc, char *argv[])
 
		}
 
	}
 

	
 
	if (sounddriver == nullptr && _ini_sounddriver != nullptr) sounddriver = stredup(_ini_sounddriver);
 
	if (sounddriver.empty() && !_ini_sounddriver.empty()) sounddriver = _ini_sounddriver;
 
	DriverFactoryBase::SelectDriver(sounddriver, Driver::DT_SOUND);
 
	free(sounddriver);
 

	
 
	if (musicdriver == nullptr && _ini_musicdriver != nullptr) musicdriver = stredup(_ini_musicdriver);
 
	if (musicdriver.empty() && !_ini_musicdriver.empty()) musicdriver = _ini_musicdriver;
 
	DriverFactoryBase::SelectDriver(musicdriver, Driver::DT_MUSIC);
 
	free(musicdriver);
 

	
 
	/* Take our initial lock on whatever we might want to do! */
 
	try {
 
@@ -868,23 +860,9 @@ int openttd_main(int argc, char *argv[])
 

	
 
	/* Reset windowing system, stop drivers, free used memory, ... */
 
	ShutdownGame();
 
	goto exit_normal;
 

	
 
exit_noshutdown:
 
	/* These three are normally freed before bootstrap. */
 
	free(videodriver);
 
	free(blitter);
 

	
 
exit_bootstrap:
 
	/* These are normally freed before exit, but after bootstrap. */
 
	free(musicdriver);
 
	free(sounddriver);
 

	
 
exit_normal:
 
	free(_ini_musicdriver);
 
	free(_ini_sounddriver);
 
	free(_ini_videodriver);
 
	free(_ini_blitter);
 

	
 
	delete scanner;