summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfonsinchen <fonsinchen@openttd.org>2013-06-09 13:02:40 +0000
committerfonsinchen <fonsinchen@openttd.org>2013-06-09 13:02:40 +0000
commit5c8ff0a251342f7c7dd87a2d37ebe587ea54aba1 (patch)
treefeeb2f9b938fceae8a1fbb75e5e42e0f3c4d362b
parent3d0a0e8e48f1de9106628a11ed08fa0b71b961b4 (diff)
downloadopenttd-5c8ff0a251342f7c7dd87a2d37ebe587ea54aba1.tar.xz
(svn r25359) -Codechange: schedule jobs when tracking capacities of links
-rw-r--r--src/station.cpp2
-rw-r--r--src/station_cmd.cpp4
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 {