Explorar o código

Don't send loading updates too frequently

nordsoft %!s(int64=2) %!d(string=hai) anos
pai
achega
cda4ae84aa
Modificáronse 1 ficheiros con 9 adicións e 4 borrados
  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));
 		}
 	});