From 5c8ff0a251342f7c7dd87a2d37ebe587ea54aba1 Mon Sep 17 00:00:00 2001 From: fonsinchen Date: Sun, 9 Jun 2013 13:02:40 +0000 Subject: [PATCH] (svn r25359) -Codechange: schedule jobs when tracking capacities of links --- src/station.cpp | 2 ++ src/station_cmd.cpp | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/station.cpp b/src/station.cpp index 9f078a1a29..d7cd0ea2bb 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 7fdef90de0..6ef992caa1 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 {