1
0
Fork 0

Raw-pointer -> smarter pointer in TileMgr

Not fixing any leaks, just making ownership more explicit.
This commit is contained in:
James Turner 2020-08-11 11:44:29 +01:00
parent e2e5223784
commit fff2fa1718
2 changed files with 14 additions and 17 deletions

View file

@ -138,8 +138,6 @@ FGTileMgr::FGTileMgr():
state( Start ), state( Start ),
last_state( Running ), last_state( Running ),
scheduled_visibility(100.0), scheduled_visibility(100.0),
_terra_sync(NULL),
_listener(NULL),
_visibilityMeters(fgGetNode("/environment/visibility-m", true)), _visibilityMeters(fgGetNode("/environment/visibility-m", true)),
_lodDetailed(fgGetNode("/sim/rendering/static-lod/detailed", true)), _lodDetailed(fgGetNode("/sim/rendering/static-lod/detailed", true)),
_lodRoughDelta(fgGetNode("/sim/rendering/static-lod/rough-delta", true)), _lodRoughDelta(fgGetNode("/sim/rendering/static-lod/rough-delta", true)),
@ -165,8 +163,7 @@ void FGTileMgr::init()
void FGTileMgr::shutdown() void FGTileMgr::shutdown()
{ {
delete _listener; _listener.reset();
_listener = NULL;
FGScenery* scenery = globals->get_scenery(); FGScenery* scenery = globals->get_scenery();
if (scenery && scenery->get_terrain_branch()) { if (scenery && scenery->get_terrain_branch()) {
@ -181,11 +178,11 @@ void FGTileMgr::shutdown()
void FGTileMgr::reinit() void FGTileMgr::reinit()
{ {
SG_LOG( SG_TERRAIN, SG_INFO, "Initializing Tile Manager subsystem." ); SG_LOG( SG_TERRAIN, SG_INFO, "Initializing Tile Manager subsystem." );
_terra_sync = static_cast<simgear::SGTerraSync*> (globals->get_subsystem("terrasync")); auto terraSync = globals->get_subsystem<simgear::SGTerraSync>();
// drops the previous options reference // drops the previous options reference
_options = new simgear::SGReaderWriterOptions; _options = new simgear::SGReaderWriterOptions;
_listener = new TileManagerListener(this); _listener.reset(new TileManagerListener(this));
materialLibChanged(); materialLibChanged();
_options->setPropertyNode(globals->get_props()); _options->setPropertyNode(globals->get_props());
@ -198,8 +195,8 @@ void FGTileMgr::reinit()
} }
_options->setPluginStringData("SimGear::FG_ROOT", globals->get_fg_root().utf8Str()); _options->setPluginStringData("SimGear::FG_ROOT", globals->get_fg_root().utf8Str());
if (_terra_sync) { if (terraSync) {
_options->setPluginStringData("SimGear::TERRASYNC_ROOT", globals->get_terrasync_dir().utf8Str()); _options->setPluginStringData("SimGear::TERRASYNC_ROOT", globals->get_terrasync_dir().utf8Str());
} }
if (!_disableNasalHooks->getBoolValue()) if (!_disableNasalHooks->getBoolValue())
@ -353,6 +350,7 @@ void FGTileMgr::schedule_needed(const SGBucket& curr_bucket, double vis)
SGBucket b; SGBucket b;
int x, y; int x, y;
auto terraSync = globals->get_subsystem<simgear::SGTerraSync>();
/* schedule all tiles, use distance-based loading priority, /* schedule all tiles, use distance-based loading priority,
* so tiles are loaded in innermost-to-outermost sequence. */ * so tiles are loaded in innermost-to-outermost sequence. */
@ -368,8 +366,8 @@ void FGTileMgr::schedule_needed(const SGBucket& curr_bucket, double vis)
float priority = (-1.0) * (x*x+y*y); float priority = (-1.0) * (x*x+y*y);
sched_tile( b, priority, true, 0.0 ); sched_tile( b, priority, true, 0.0 );
if (_terra_sync) { if (terraSync) {
_terra_sync->scheduleTile(b); terraSync->scheduleTile(b);
} }
} }
} }
@ -622,7 +620,8 @@ bool FGTileMgr::isSceneryLoaded()
bool FGTileMgr::isTileDirSyncing(const std::string& tileFileName) const bool FGTileMgr::isTileDirSyncing(const std::string& tileFileName) const
{ {
if (!_terra_sync) { auto terraSync = globals->get_subsystem<simgear::SGTerraSync>();
if (!terraSync) {
return false; return false;
} }
@ -630,5 +629,5 @@ bool FGTileMgr::isTileDirSyncing(const std::string& tileFileName) const
long int bucketIndex = simgear::strutils::to_int(nameWithoutExtension); long int bucketIndex = simgear::strutils::to_int(nameWithoutExtension);
SGBucket bucket(bucketIndex); SGBucket bucket(bucketIndex);
return _terra_sync->isTileDirPending(bucket.gen_base_path()); return terraSync->isTileDirPending(bucket.gen_base_path());
} }

View file

@ -37,7 +37,6 @@ class Node;
namespace simgear namespace simgear
{ {
class SGTerraSync;
class SGReaderWriterOptions; class SGReaderWriterOptions;
} }
@ -73,12 +72,11 @@ private:
* tile cache * tile cache
*/ */
TileCache tile_cache; TileCache tile_cache;
simgear::SGTerraSync* _terra_sync;
class TileManagerListener; class TileManagerListener;
friend class TileManagerListener; friend class TileManagerListener;
TileManagerListener* _listener; std::unique_ptr<TileManagerListener> _listener;
// update various queues internal queues // update various queues internal queues
void update_queues(bool& isDownloadingScenery); void update_queues(bool& isDownloadingScenery);