Fix incorrect handling of some options when backend==auto

This commit is contained in:
Rogier 2015-12-17 12:30:46 +01:00
parent 23dad0dbf4
commit 4041993672
3 changed files with 18 additions and 11 deletions

View File

@ -18,6 +18,11 @@
the libraries for those databases still needed to be installed on the libraries for those databases still needed to be installed on
the system for compilation to succeed. Now the libraries no the system for compilation to succeed. Now the libraries no
longer need to be installed if not used. longer need to be installed if not used.
- Fixed backend selection, so that there should no longer be a difference
between an automatically selected backend, and the same backend
specified manually.
(At least one backend-specific (LevelDB-related) option was not
taking effect when LevelDB was auto-selected).
[10 mar 2015] [10 mar 2015]
Enhancements: Enhancements:
- Added an optimisation option: --disable-blocklist-prefetch. - Added an optimisation option: --disable-blocklist-prefetch.

View File

@ -138,6 +138,7 @@ TileGenerator::TileGenerator():
m_drawAir(false), m_drawAir(false),
m_shading(true), m_shading(true),
m_backend(DEFAULT_BACKEND), m_backend(DEFAULT_BACKEND),
m_requestedBackend(DEFAULT_BACKEND),
m_shrinkGeometry(true), m_shrinkGeometry(true),
m_blockGeometry(false), m_blockGeometry(false),
m_scaleFactor(1), m_scaleFactor(1),
@ -460,7 +461,7 @@ void TileGenerator::parseDataFile(const std::string &fileName, int depth, const
void TileGenerator::setBackend(std::string backend) void TileGenerator::setBackend(std::string backend)
{ {
m_backend = backend; m_requestedBackend = backend;
} }
void TileGenerator::setChunkSize(int size) void TileGenerator::setChunkSize(int size)
@ -767,12 +768,12 @@ int TileGenerator::getMapChunkSize(const std::string &input)
void TileGenerator::openDb(const std::string &input) void TileGenerator::openDb(const std::string &input)
{ {
string backend = m_backend; m_backend = m_requestedBackend;
bool unsupported = false; bool unsupported = false;
if (m_backend == "auto") if (m_backend == "auto")
backend = getWorldDatabaseBackend(input); m_backend = getWorldDatabaseBackend(input);
if(backend == "sqlite3") { if(m_backend == "sqlite3") {
#if USE_SQLITE3 #if USE_SQLITE3
DBSQLite3 *db; DBSQLite3 *db;
m_db = db = new DBSQLite3(input); m_db = db = new DBSQLite3(input);
@ -780,7 +781,7 @@ void TileGenerator::openDb(const std::string &input)
unsupported = true; unsupported = true;
#endif #endif
} }
else if (backend == "postgresql") { else if (m_backend == "postgresql") {
#if USE_POSTGRESQL #if USE_POSTGRESQL
DBPostgreSQL *db; DBPostgreSQL *db;
m_db = db = new DBPostgreSQL(input); m_db = db = new DBPostgreSQL(input);
@ -788,27 +789,27 @@ void TileGenerator::openDb(const std::string &input)
unsupported = true; unsupported = true;
#endif #endif
} }
else if (backend == "leveldb") { else if (m_backend == "leveldb") {
#if USE_LEVELDB #if USE_LEVELDB
m_db = new DBLevelDB(input); m_db = new DBLevelDB(input);
#else #else
unsupported = true; unsupported = true;
#endif #endif
} }
else if (backend == "redis") { else if (m_backend == "redis") {
#if USE_REDIS #if USE_REDIS
m_db = new DBRedis(input); m_db = new DBRedis(input);
#else #else
unsupported = true; unsupported = true;
#endif #endif
} }
else if (m_backend == "auto") else if (m_requestedBackend == "auto")
throw std::runtime_error(((std::string) "World uses unrecognised database backend: ") + backend); throw std::runtime_error(((std::string) "World uses unrecognised database backend: ") + m_backend);
else else
throw std::runtime_error(((std::string) "Internal error: unknown database backend: ") + m_backend); throw std::runtime_error(((std::string) "Internal error: unknown database backend: ") + m_requestedBackend);
if (unsupported) if (unsupported)
throw std::runtime_error(((std::string) "World uses backend '") + backend + ", which was not enabled at compile-time."); throw std::runtime_error(((std::string) "World uses backend '") + m_backend + ", which was not enabled at compile-time.");
} }
void TileGenerator::loadBlocks() void TileGenerator::loadBlocks()

View File

@ -238,6 +238,7 @@ private:
bool m_drawAir; bool m_drawAir;
bool m_shading; bool m_shading;
std::string m_backend; std::string m_backend;
std::string m_requestedBackend;
bool m_shrinkGeometry; bool m_shrinkGeometry;
bool m_blockGeometry; bool m_blockGeometry;
int m_scaleFactor; int m_scaleFactor;