mirror of https://github.com/OpenTTD/OpenTTD.git
Change: [Linkgraph] Delete links only served by vehicles stopped in depot
A stale link is not deleted if the link refresher finds a vehicle that still serves it. This commit excludes vehicles stopped in depot for a very long time from the link refresher, so that their stale links can be deleted.
This commit is contained in:
parent
dd3acccb1b
commit
b83820e723
|
@ -447,6 +447,9 @@ public:
|
||||||
/** Minimum effective distance for timeout calculation. */
|
/** Minimum effective distance for timeout calculation. */
|
||||||
static const uint MIN_TIMEOUT_DISTANCE = 32;
|
static const uint MIN_TIMEOUT_DISTANCE = 32;
|
||||||
|
|
||||||
|
/** Number of days before deleting links served only by vehicles stopped in depot. */
|
||||||
|
static const uint STALE_LINK_DEPOT_TIMEOUT = 1024;
|
||||||
|
|
||||||
/** Minimum number of days between subsequent compressions of a LG. */
|
/** Minimum number of days between subsequent compressions of a LG. */
|
||||||
static const uint COMPRESSION_INTERVAL = 256;
|
static const uint COMPRESSION_INTERVAL = 256;
|
||||||
|
|
||||||
|
|
|
@ -3688,8 +3688,11 @@ void DeleteStaleLinks(Station *from)
|
||||||
auto iter = vehicles.begin();
|
auto iter = vehicles.begin();
|
||||||
while (iter != vehicles.end()) {
|
while (iter != vehicles.end()) {
|
||||||
Vehicle *v = *iter;
|
Vehicle *v = *iter;
|
||||||
|
/* Do not refresh links of vehicles that have been stopped in depot for a long time. */
|
||||||
LinkRefresher::Run(v, false); // Don't allow merging. Otherwise lg might get deleted.
|
if (!v->IsStoppedInDepot() || static_cast<uint>(_date - v->date_of_last_service) <=
|
||||||
|
LinkGraph::STALE_LINK_DEPOT_TIMEOUT) {
|
||||||
|
LinkRefresher::Run(v, false); // Don't allow merging. Otherwise lg might get deleted.
|
||||||
|
}
|
||||||
if (edge.LastUpdate() == _date) {
|
if (edge.LastUpdate() == _date) {
|
||||||
updated = true;
|
updated = true;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue