diff -r f9a949ef955b -r cacda05a053e QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Sun Nov 28 13:12:00 2010 -0500 +++ b/QTfrontend/hwform.cpp Sun Nov 28 13:58:25 2010 -0500 @@ -513,6 +513,7 @@ // joining the lobby else if(id == ID_PAGE_ROOMSLIST) { if ( hwnet && game && game->gameState == gsStarted) { // abnormal exit - kick or room destruction - send kills. + game->netSuspend = true; game->KillAllTeams(); } ui.pageRoomsList->chatWidget->loadLists(ui.pageOptions->editNetNick->text()); @@ -938,6 +939,7 @@ void HWForm::GameStateChanged(GameState gameState) { + quint8 id = ui.Pages->currentIndex(); switch(gameState) { case gsStarted: { Music(false); @@ -956,11 +958,12 @@ case gsFinished: { //setVisible(true); setFocusPolicy(Qt::StrongFocus); - if (!hwnet || (!hwnet->isRoomChief() || !hwnet->isInRoom())) GoBack(); + if (id == ID_PAGE_INGAME) GoBack(); Music(ui.pageOptions->CBEnableFrontendMusic->isChecked()); if (wBackground) wBackground->startAnimation(); GoToPage(ID_PAGE_GAMESTATS); - if (hwnet) hwnet->gameFinished(); + if (hwnet && (!game || !game->netSuspend)) hwnet->gameFinished(); + if (game) game->netSuspend = false; break; } default: { @@ -971,7 +974,7 @@ // was room chief and the game was aborted (hwnet && hwnet->isRoomChief() && hwnet->isInRoom() && (gameState == gsInterrupted || gameState == gsStopped || gameState == gsDestroyed))) { - if (!hwnet || (!hwnet->isRoomChief() || !hwnet->isInRoom())) GoBack(); + if (id == ID_PAGE_INGAME) GoBack(); Music(ui.pageOptions->CBEnableFrontendMusic->isChecked()); if (wBackground) wBackground->startAnimation(); if (hwnet) hwnet->gameFinished();