From b3a7a04cf29b73d9e13fcb3b270adb72ae02d98b Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Mon, 25 Feb 2019 18:43:38 +0000 Subject: [PATCH] Linkgraph: Pause game on load if a link graph join is immediately due --- src/linkgraph/linkgraphschedule.cpp | 11 +++++++++++ src/saveload/afterload.cpp | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/src/linkgraph/linkgraphschedule.cpp b/src/linkgraph/linkgraphschedule.cpp index 806e31c58a..f27053da6a 100644 --- a/src/linkgraph/linkgraphschedule.cpp +++ b/src/linkgraph/linkgraphschedule.cpp @@ -336,6 +336,17 @@ void StateGameLoop_LinkGraphPauseControl() } } +/** + * Pause the game on load if we would do a join with the next link graph job, but it is still running, and it would not + * be caught by a call to StateGameLoop_LinkGraphPauseControl(). + */ +void AfterLoad_LinkGraphPauseControl() +{ + if (LinkGraphSchedule::instance.IsJoinWithUnfinishedJobDue()) { + _pause_mode |= PM_PAUSED_LINK_GRAPH; + } +} + /** * Spawn or join a link graph job or compress a link graph if any link graph is * due to do so. diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index 9bfbac79c7..f25286f35a 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -3665,6 +3665,11 @@ bool AfterLoadGame() default: break; } + if (!_networking || _network_server) { + extern void AfterLoad_LinkGraphPauseControl(); + AfterLoad_LinkGraphPauseControl(); + } + return true; }