Codechange: Use std::string in the driver and blitter selection code.

This commit is contained in:
Michael Lutz
2020-05-17 23:32:08 +02:00
parent a49fdb7ebb
commit 37bc2f8064
51 changed files with 126 additions and 166 deletions

View File

@@ -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;