more correct net disconnection
authordisplacer
Thu, 18 Jan 2007 20:29:28 +0000
changeset 350 c3ccec3834e8
parent 349 5b37d6a39829
child 351 29bc9c36ad5f
more correct net disconnection
QTfrontend/hwform.cpp
QTfrontend/netserver.cpp
--- a/QTfrontend/hwform.cpp	Thu Jan 18 19:59:04 2007 +0000
+++ b/QTfrontend/hwform.cpp	Thu Jan 18 20:29:28 2007 +0000
@@ -180,6 +180,9 @@
 
 void HWForm::GoBack()
 {
+	if (!PagesStack.isEmpty() && PagesStack.top() == ID_PAGE_NET) {
+	  NetDisconnect();
+	}
 	quint8 id = PagesStack.isEmpty() ? ID_PAGE_MAIN : PagesStack.pop();
 	OnPageShown(id);
 	ui.Pages->setCurrentIndex(id);
@@ -280,7 +283,6 @@
 void HWForm::NetDisconnect()
 {
   hwnet->Disconnect();
-  GoBack();
   delete hwnet;
   hwnet=0;
   if(pnetserver) {
--- a/QTfrontend/netserver.cpp	Thu Jan 18 19:59:04 2007 +0000
+++ b/QTfrontend/netserver.cpp	Thu Jan 18 20:29:28 2007 +0000
@@ -59,6 +59,9 @@
 void HWNetServer::ClientDisconnect(HWConnectedClient* client)
 {
   QList<HWConnectedClient*>::iterator it=std::find(connclients.begin(), connclients.end(), client);
+  for(QList<QStringList>::iterator tmIt=(*it)->m_teamsCfg.begin(); tmIt!=(*it)->m_teamsCfg.end(); ++tmIt) {
+    sendOthers(*it, QString("REMOVETEAM:")+delimeter+*(tmIt->begin()));
+  }
   connclients.erase(it);
   //teamChanged();
 }