- more bugfixes for headless server mode, attempt to fix crash when switching info fast and avoid render on battle end on server.

This commit is contained in:
Mark Vejvoda 2011-09-26 04:50:13 +00:00
parent 26d0b71bd5
commit f5c7eff49c
4 changed files with 21 additions and 6 deletions

View File

@ -86,6 +86,9 @@ void BattleEnd::update() {
}
void BattleEnd::render() {
if(this->stats.getIsMasterserverMode() == true) {
return;
}
Renderer &renderer= Renderer::getInstance();
//CoreData &coreData= CoreData::getInstance();

View File

@ -2343,12 +2343,15 @@ void MenuStateCustomGame::simpleTask(BaseThread *callingThread) {
}
ServerInterface *serverInterface= NetworkManager::getInstance().getServerInterface(false);
if(serverInterface != NULL) {
serverInterface->setGameSettings(&gameSettings,false);
}
if(hasClientConnection == true && serverInterface != NULL) {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
serverInterface->broadcastGameSetup(&gameSettings);
if(this->masterserverMode == false || (serverInterface->getGameSettingsUpdateCount() <= lastMasterServerSettingsUpdateCount)) {
serverInterface->setGameSettings(&gameSettings,false);
if(hasClientConnection == true) {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
serverInterface->broadcastGameSetup(&gameSettings);
}
}
}
}

View File

@ -1639,6 +1639,15 @@ int ServerInterface::getOpenSlotCount() {
return openSlotCount;
}
int ServerInterface::getGameSettingsUpdateCount() {
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s] START gameSettingsUpdateCount = %d\n",__FILE__,__FUNCTION__,gameSettingsUpdateCount);
MutexSafeWrapper safeMutex(&serverSynchAccessor,string(__FILE__) + "_" + intToStr(__LINE__));
int result = gameSettingsUpdateCount;
safeMutex.ReleaseLock();
return result;
}
void ServerInterface::setGameSettings(GameSettings *serverGameSettings, bool waitForClientAck) {
if(SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s] START gameSettingsUpdateCount = %d, waitForClientAck = %d\n",__FILE__,__FUNCTION__,gameSettingsUpdateCount,waitForClientAck);
MutexSafeWrapper safeMutex(&serverSynchAccessor,string(__FILE__) + "_" + intToStr(__LINE__));

View File

@ -121,7 +121,7 @@ public:
void setGameSettings(GameSettings *serverGameSettings, bool waitForClientAck);
void broadcastGameSetup(const GameSettings *gameSettings);
int getGameSettingsUpdateCount() const { return gameSettingsUpdateCount; }
int getGameSettingsUpdateCount();
bool getMasterserverAdminRequestLaunch() const { return masterserverAdminRequestLaunch; }
void setMasterserverAdminRequestLaunch(bool value) { masterserverAdminRequestLaunch = value; }