浏览代码

Don't send loading updates too frequently

nordsoft 2 年之前
父节点
当前提交
cda4ae84aa
共有 1 个文件被更改,包括 9 次插入4 次删除
  1. 9 4
      server/CVCMIServer.cpp

+ 9 - 4
server/CVCMIServer.cpp

@@ -282,14 +282,19 @@ bool CVCMIServer::prepareToStartGame()
 	Load::ProgressAccumulator progressTracking;
 	Load::Progress current(1);
 	progressTracking.include(current);
+	Load::Type currentProgress = std::numeric_limits<Load::Type>::max();
 	
-	auto progressTrackingThread = boost::thread([this, &progressTracking]()
+	auto progressTrackingThread = boost::thread([this, &progressTracking, &currentProgress]()
 	{
 		while(!progressTracking.finished())
 		{
-			std::unique_ptr<LobbyLoadProgress> loadProgress(new LobbyLoadProgress);
-			loadProgress->progress = progressTracking.get();
-			addToAnnounceQueue(std::move(loadProgress));
+			if(progressTracking.get() != currentProgress)
+			{
+				currentProgress = progressTracking.get();
+				std::unique_ptr<LobbyLoadProgress> loadProgress(new LobbyLoadProgress);
+				loadProgress->progress = currentProgress;
+				addToAnnounceQueue(std::move(loadProgress));
+			}
 			boost::this_thread::sleep(boost::posix_time::milliseconds(50));
 		}
 	});