diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index bc38588a..67e729fa 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -206,6 +206,7 @@ void gameLobbyDialogImpl::refresh(int actionID) { if (actionID == MSG_NET_GAME_CLIENT_START) { + treeWidget_GameList->clear(); this->accept(); } } diff --git a/src/net/common/clientstate.cpp b/src/net/common/clientstate.cpp index 197f6546..128d24b5 100644 --- a/src/net/common/clientstate.cpp +++ b/src/net/common/clientstate.cpp @@ -1017,9 +1017,8 @@ ClientStateSynchronizeStart::Process(ClientThread &client) boost::shared_ptr startAck(new NetPacketStartEventAck); client.GetSender().Send(client.GetContext().GetSessionData(), startAck); // Unsubscribe lobby messages. - // TODO - //boost::shared_ptr unsubscr(new NetPacketUnsubscribeGameList); - //client.GetSender().Send(client.GetContext().GetSessionData(), unsubscr); + boost::shared_ptr unsubscr(new NetPacketUnsubscribeGameList); + client.GetSender().Send(client.GetContext().GetSessionData(), unsubscr); client.SetState(ClientStateWaitStart::Instance()); } @@ -1150,6 +1149,12 @@ ClientStateWaitHand::InternalProcess(ClientThread &client, boost::shared_ptrgetMyName(), curGame->getMyGameID()); + // Clear game info map as it is outdated. + client.ClearGameInfoMap(); + // Resubscribe Lobby messages. + boost::shared_ptr resubscr(new NetPacketResubscribeGameList); + client.GetSender().Send(client.GetContext().GetSessionData(), resubscr); + // Show Lobby dialog. client.GetCallback().SignalNetClientWaitDialog(); client.SetState(ClientStateWaitGame::Instance()); retVal = MSG_NET_GAME_CLIENT_END; diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 7a77f11f..6391d563 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -981,6 +981,18 @@ ServerLobbyThread::InternalResubscribeMsg(SessionWrapper session) { session.sessionData->SetWantsLobbyMsg(); SendGameList(session.sessionData); + // Send new statistics information. + boost::shared_ptr packet(new NetPacketStatisticsChanged); + NetPacketStatisticsChanged::Data statData; + statData.stats.numberOfPlayersOnServer = m_sessionManager.GetRawSessionCount() + m_gameSessionManager.GetRawSessionCount(); + try { + static_cast(packet.get())->SetData(statData); + + GetSender().Send(session.sessionData, packet); + } catch (const NetException &) + { + // Ignore errors for now. + } } }