diff options
author | fonsinchen <fonsinchen@openttd.org> | 2013-06-09 13:02:40 +0000 |
---|---|---|
committer | fonsinchen <fonsinchen@openttd.org> | 2013-06-09 13:02:40 +0000 |
commit | 5c8ff0a251342f7c7dd87a2d37ebe587ea54aba1 (patch) | |
tree | feeb2f9b938fceae8a1fbb75e5e42e0f3c4d362b /src | |
parent | 3d0a0e8e48f1de9106628a11ed08fa0b71b961b4 (diff) | |
download | openttd-5c8ff0a251342f7c7dd87a2d37ebe587ea54aba1.tar.xz |
(svn r25359) -Codechange: schedule jobs when tracking capacities of links
Diffstat (limited to 'src')
-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 { |