Index: src/playmp_controller.cpp
===================================================================
--- src/playmp_controller.cpp	(revision 54549)
+++ src/playmp_controller.cpp	(working copy)
@@ -489,7 +489,6 @@
 				}
 				const turn_info::PROCESS_DATA_RESULT result = turn_data.process_network_data(cfg, from, data_backlog_, skip_replay_);
 				if (result == turn_info::PROCESS_RESTART_TURN) {
-					update_gui_to_player(player_number_ - 1);
 					player_type_changed_ = true;
 					return;
 				} else if (result == turn_info::PROCESS_END_TURN) {
Index: src/playturn.cpp
===================================================================
--- src/playturn.cpp	(revision 54549)
+++ src/playturn.cpp	(working copy)
@@ -176,6 +176,8 @@
 				if (!(*resources::teams)[resources::screen->playing_team()].is_human())
 				{
 					resources::screen->set_team(index);
+					resources::screen->redraw_everything();
+					resources::screen->recalculate_minimap();
 				}
 				tm.make_human();
 			} else if (controller == "human_ai" && !tm.is_human_ai()) {
@@ -192,6 +194,12 @@
 				restart = false;
 			}
 
+			if (is_observer()) {
+				resources::screen->set_team(resources::screen->playing_team());
+				resources::screen->redraw_everything();
+				resources::screen->recalculate_minimap();
+			}
+
 			resources::controller->maybe_do_init_side(index);
 
 			resources::whiteboard->on_change_controller(side,tm);
Index: src/team.cpp
===================================================================
--- src/team.cpp	(revision 54549)
+++ src/team.cpp	(working copy)
@@ -643,7 +643,7 @@
 	}
 
 	foreach (const team &t, *teams) {
-		if (t.is_human())
+		if (t.is_human() || t.is_human_ai())
 			return false;
 	}
 
