Fixing delayed sending of create/join game for network games.

This commit is contained in:
lotodore
2009-06-20 18:41:03 +00:00
parent b868990462
commit a2e692d844
4 changed files with 38 additions and 49 deletions
+23 -15
View File
@@ -481,25 +481,28 @@ ClientThread::SendSessionPacket(boost::shared_ptr<NetPacket> packet)
{
// Put packets in a buffer until the session is established.
if (IsSessionEstablished())
{
if (!m_outPacketList.empty())
{
NetPacketList::iterator i = m_outPacketList.begin();
NetPacketList::iterator end = m_outPacketList.end();
while (i != end)
{
GetSender().Send(GetContext().GetSessionData(), *i);
++i;
}
m_outPacketList.clear();
}
GetSender().Send(GetContext().GetSessionData(), packet);
}
else
m_outPacketList.push_back(packet);
}
void
ClientThread::SendQueuedPackets()
{
if (!m_outPacketList.empty())
{
NetPacketList::iterator i = m_outPacketList.begin();
NetPacketList::iterator end = m_outPacketList.end();
while (i != end)
{
GetSender().Send(GetContext().GetSessionData(), *i);
++i;
}
m_outPacketList.clear();
}
}
bool
ClientThread::GetCachedPlayerInfo(unsigned id, PlayerInfo &info) const
{
@@ -1297,7 +1300,12 @@ ClientThread::IsSessionEstablished() const
void
ClientThread::SetSessionEstablished(bool flag)
{
m_sessionEstablished = flag;
if (m_sessionEstablished != flag)
{
m_sessionEstablished = flag;
if (flag)
SendQueuedPackets();
}
}
bool