mirror of https://github.com/OpenTTD/OpenTTD
(svn r16323) -Fix [FS#2900]: desyncs due to the fact that depot searching with a maximum search depth simply does not work with YAPF's caches.
parent
8324cfc875
commit
814f153b5a
|
@ -54,6 +54,10 @@ protected:
|
||||||
};
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
/**
|
||||||
|
* @note maximum cost doesn't work with caching enabled
|
||||||
|
* @todo fix maximum cost failing with caching (e.g. FS#2900)
|
||||||
|
*/
|
||||||
int m_max_cost;
|
int m_max_cost;
|
||||||
CBlobT<int> m_sig_look_ahead_costs;
|
CBlobT<int> m_sig_look_ahead_costs;
|
||||||
bool m_disable_cache;
|
bool m_disable_cache;
|
||||||
|
|
|
@ -213,6 +213,16 @@ public:
|
||||||
static bool stFindNearestDepotTwoWay(const Vehicle *v, TileIndex t1, Trackdir td1, TileIndex t2, Trackdir td2, int max_distance, int reverse_penalty, TileIndex *depot_tile, bool *reversed)
|
static bool stFindNearestDepotTwoWay(const Vehicle *v, TileIndex t1, Trackdir td1, TileIndex t2, Trackdir td2, int max_distance, int reverse_penalty, TileIndex *depot_tile, bool *reversed)
|
||||||
{
|
{
|
||||||
Tpf pf1;
|
Tpf pf1;
|
||||||
|
/*
|
||||||
|
* With caching enabled it simply cannot get a reliable result when you
|
||||||
|
* have limited the distance a train may travel. This means that the
|
||||||
|
* cached result does not match uncached result in all cases and that
|
||||||
|
* causes desyncs. So disable caching when finding for a depot that is
|
||||||
|
* nearby. This only happens with automatic servicing of vehicles,
|
||||||
|
* so it will only impact performance when you do not manually set
|
||||||
|
* depot orders and you do not disable automatic servicing.
|
||||||
|
*/
|
||||||
|
if (max_distance != 0) pf1.DisableCache(true);
|
||||||
bool result1 = pf1.FindNearestDepotTwoWay(v, t1, td1, t2, td2, max_distance, reverse_penalty, depot_tile, reversed);
|
bool result1 = pf1.FindNearestDepotTwoWay(v, t1, td1, t2, td2, max_distance, reverse_penalty, depot_tile, reversed);
|
||||||
|
|
||||||
#if DEBUG_YAPF_CACHE
|
#if DEBUG_YAPF_CACHE
|
||||||
|
|
Loading…
Reference in New Issue