diff options
-rw-r--r-- | src/station.cpp | 2 | ||||
-rw-r--r-- | src/station_cmd.cpp | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/station.cpp b/src/station.cpp index 9f078a1a2..d7cd0ea2b 100644 --- a/src/station.cpp +++ b/src/station.cpp @@ -25,6 +25,7 @@ #include "industry.h" #include "core/random_func.hpp" #include "linkgraph/linkgraph.h" +#include "linkgraph/linkgraphschedule.h" #include "table/strings.h" @@ -94,6 +95,7 @@ Station::~Station() if (lg != NULL) { lg->RemoveNode(this->goods[c].node); if (lg->Size() == 0) { + LinkGraphSchedule::Instance()->Unqueue(lg); delete lg; } } diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 7fdef90de..6ef992caa 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -3397,6 +3397,7 @@ void IncreaseStats(Station *st, CargoID cargo, StationID next_station_id, uint c if (ge2.link_graph == INVALID_LINK_GRAPH) { if (LinkGraph::CanAllocateItem()) { lg = new LinkGraph(cargo); + LinkGraphSchedule::Instance()->Queue(lg); ge2.link_graph = lg->index; ge2.node = lg->AddNode(st2); } else { @@ -3418,9 +3419,11 @@ void IncreaseStats(Station *st, CargoID cargo, StationID next_station_id, uint c if (ge1.link_graph != ge2.link_graph) { LinkGraph *lg2 = LinkGraph::Get(ge2.link_graph); if (lg->Size() < lg2->Size()) { + LinkGraphSchedule::Instance()->Unqueue(lg); lg2->Merge(lg); // Updates GoodsEntries of lg lg = lg2; } else { + LinkGraphSchedule::Instance()->Unqueue(lg2); lg->Merge(lg2); // Updates GoodsEntries of lg2 } } @@ -3541,6 +3544,7 @@ static uint UpdateStationWaiting(Station *st, CargoID type, uint amount, SourceT if (ge.link_graph == INVALID_LINK_GRAPH) { if (LinkGraph::CanAllocateItem()) { lg = new LinkGraph(type); + LinkGraphSchedule::Instance()->Queue(lg); ge.link_graph = lg->index; ge.node = lg->AddNode(st); } else { |